【发布时间】:2011-02-21 02:48:58
【问题描述】:
在我的应用程序中,一家公司可以有很多员工,每个员工可能有多个电子邮件地址。
数据库架构像这样关联表:
公司 -> CompanyEmployeeXref -> 员工 -> EmployeeAddressXref -> 电子邮件
我正在使用实体框架,我想创建一个 LINQ 查询,该查询返回公司名称和逗号分隔的员工电子邮件地址列表。这是我正在尝试的查询:
from c in Company
join ex in CompanyEmployeeXref on c.Id equals ex.CompanyId
join e in Employee on ex.EmployeeId equals e.Id
join ax in EmployeeAddressXref on e.Id equals ax.EmployeeId
join a in Address on ax.AddressId equals a.Id
select new {
c.Name,
a.Email.Aggregate(x=>x + ",")
}
期望的输出:
"公司 1", "a@company1.com,b@company1.com,c@company1.com"
"公司 2", "a@company2.com,b@company2.com,c@company2.com"
...
我知道这段代码是错误的,我想我错过了一个 group by,但它说明了这一点。我不确定语法。这甚至可能吗?感谢您的帮助。
【问题讨论】:
-
我有一些代码可以执行此操作,但它会为您的每家公司执行一个新批次。除非有人有更好的建议,否则我会在明天发布。