Linq-to-sql EF4 - 从生成列表
Posted
技术标签:
【中文标题】Linq-to-sql EF4 - 从生成列表【英文标题】:Linq-to-sql EF4 - Generate list from 【发布时间】:2011-06-21 05:38:19 【问题描述】:我有以下 EF
Education
long id,
string name,
User
long id
string name
...
UserEducation
long userId,
long educationId,
long rank
我想要一个 linq-to-sql 调用,它会返回如下结果: 用户名 教育作为education1、education2、education3等的列表
我可以得到一个结果,其中包含用户使用的多个教育记录
from u in users where u.userIsSomething.Equals(true)
join d in usereducation on u.id equals d.userid
join e in education on d.educationId equals e.Id
select new UserEd()
UserName = u.Name,
Education = <--- I end up with several unique education entries, I want to flatten into a list
所以记录一下
Fred AA in Culinary Arts
Fred BS in Food Science
Fred MBA
生成
弗雷德 烹饪艺术学士、食品科学学士、MBA
我意识到我可以简单地遍历记录,但我想把它放到一个语句中。
还没有找到类似的问题,非常感谢任何帮助。
【问题讨论】:
【参考方案1】:如果您使用的是 linq-to-sql 或实体框架,您应该具有导航属性,这样您的手动连接就变得多余了。如果您没有导航属性,那么您正在以错误的方式使用技术。重新定义您的模型以包含导航属性并尝试这个(未经测试):
var query = from u in context.Users where u.userIsSomething.Equals(true)
select new UserEd
UserName = u.Name,
Education = from ue in u.UserEducations
group ue by ue.Rank into grouped
select new RankedEd
grouped.Key,
grouped.Select(g => g.Education.Name)
);
【讨论】:
以上是关于Linq-to-sql EF4 - 从生成列表的主要内容,如果未能解决你的问题,请参考以下文章