John Carlo Narval
John Carlo Narval

Reputation: 15

How can i concat email address? C#

sample data:

Screenshot sample data

this is my code:

var query = memberModels.Join(emailAddModels,
                        member => member.Id,
                        email => email.Id,
                        (member, email) => new
                        {
                            member.FName,
                            member.LName,
                            member.MobileNumber,
                            member.LandlineNumber,
                            member.WorkNumber,
                            email.EmailAddress
                        });
                    dgReports.ItemsSource = query.ToList();
                    dgReports.Columns[0].Header = "First Name";
                    dgReports.Columns[1].Header = "Last Name";
                    dgReports.Columns[2].Header = "Mobile Number";
                    dgReports.Columns[3].Header = "Landline Number";
                    dgReports.Columns[4].Header = "Work Number";
                    dgReports.Columns[5].Header = "Email Address";

How can I concat the email address with the same user?

sample:

------------------------------------------------------------------
|juan|dela cruz|99999|12345|67890|[email protected], [email protected] |
------------------------------------------------------------------

So that I get the output shown above. please help.

Upvotes: 0

Views: 701

Answers (1)

sam
sam

Reputation: 1985

You can achieve this via GroupJoin as below:

var query = memberModels.GroupJoin(emailModels, m => m.Id, e => e.Id, (m, emailCollection) => new
            {
                FName= m.FName,
                LName = m.LName,
                MobileNumber = m.MobileNumber,
                LandlineNumber = m.LandlineNumber,
                WorkNumber = m.WorkNumber,
                emailCollection = emailCollection
                //emails = string.Join(", ", emailCollection.ToList().Select(e => e.EmailAddress) ).ToList() // you can not use string.Join directly on query, so need to do either ToList or AsEnumerable.
            }).AsEnumerable().Select(a => new 
            {
                FName = a.FName,
                LName = a.LName,
                MobileNumber = a.MobileNumber,
                LandlineNumber = a.LandlineNumber,
                WorkNumber = a.WorkNumber,
                EmailAddress = string.Join(", ", a.emailCollection.Select(e => e.EmailAddress))
            });
dgReports.ItemsSource = query.ToList(); // just assign query to ItemSource if dgReports.ItemSource accepts Enumerable (like dgReports.ItemSource = query)

Or

var query = memberModels.GroupJoin(emailModels, m => m.Id, e => e.Id, (member, emailCollection) => new
    {
        member, emailCollection
        //FName= m.FName,
        //LName = m.LName,
        //MobileNumber = m.MobileNumber,
        //LandlineNumber = m.LandlineNumber,
        //WorkNumber = m.WorkNumber,
        //emailCollection = emailCollection
        //emails = string.Join(", ", emailCollection.ToList().Select(e => e.EmailAddress) ).ToList() // you can not use string.Join directly on query, so need to do either ToList or AsEnumerable.
    }).AsEnumerable().Select(a => new 
    {
        FName = a.member.FName,
        LName = a.member.LName,
        MobileNumber = a.member.MobileNumber,
        LandlineNumber = a.member.LandlineNumber,
        WorkNumber = a.member.WorkNumber,
        EmailAddress = string.Join(", ", a.emailCollection.Select(e => e.EmailAddress))
    });
dgReports.ItemsSource = query.ToList(); // just assign query to ItemSource if dgReports.ItemSource accepts Enumerable (like dgReports.ItemSource = query)

Upvotes: 1

Related Questions