Reputation: 15
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
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