在我的应用程序中,公司可以有很多员工,每个员工可能有多个电子邮件地址。

数据库模式将表关联起来,如下所示:

公司-> CompanyEmployeeXref->雇员-> EmployeeAddressXref->电子邮件

我使用的是Entity Framework,我想创建一个LINQ查询,该查询返回公司名称和员工电子邮件地址的逗号分隔列表。这是我正在尝试的查询:
from c in Companyjoin ex in CompanyEmployeeXref on c.Id equals ex.CompanyIdjoin e in Employee on ex.EmployeeId equals e.Idjoin ax in EmployeeAddressXref on e.Id equals ax.EmployeeIdjoin a in Address on ax.AddressId equals a.Idselect new { c.Name, a.Email.Aggregate(x=>x + ",") }
所需的输出:

“Company1”,“a @ company1.com,b @ company1.com,c @ company1.com”

“Company2”,“a @ company2.com,b @ company2.com,c @ company2.com”

...

我知道这段代码是错误的,我想我错过了一个依据,但是它说明了这一点。我不确定语法。这有可能吗?谢谢你的帮助。

最佳答案

现在,我解决了这个问题:
from c in Companyjoin ex in CompanyEmployeeXref on c.Id equals ex.CompanyIdjoin e in Employee on ex.EmployeeId equals e.Idjoin ax in EmployeeAddressXref on e.Id equals ax.EmployeeIdjoin a in Address on ax.AddressId equals a.Idgroup a.Email by new {c.Name} into gselect new { Company=g.Key.Name, Email=g.Select(e=>e).Distinct() }).ToList().Select(l=> new { l.Name, Email=string.Join(",", l.Email.ToArray()) } )

10-07 19:42
查看更多