2011-05-25 76 views
0

您可以在针对您的数据库的查询中使用SelectMany,并且如果可以,该列需要使用哪种类型才能执行此操作?我在乱搞LINQPad,并且随时尝试使用SelectMany,我得到一个错误,并且从我正在阅读的内容看,它听起来像你的lambda表达式中的类型必须是一个集合。LINQ选择许多问题

+0

你能提供你尝试过的东西,相应的错误信息,以及你正在努力完成的事情。 – 2011-05-25 20:46:30

回答

1
Houses.SelectMany(h => h.HousesPersons.Select(hp => hp.Person.Name)) 

如果您有3个表格。房屋,房屋人员和人员。 房屋与使用HousesPersons存储HouseId和PersonId的人有一对多关系。

此查询会为您列出所有房屋中所有人的列表,而不是按房子分组。

编辑:对不起,我无法让AdventureWorks在我的机器上使用文本示例。

+0

很好的解释。但为了做到这一点,你是否总是需要多张桌子?有没有办法只是说Houses.SelectMany(一些lambda表达式)? – esastincy 2011-05-25 20:55:22

+0

为什么你需要,选择不返回你需要的数据?除非Select()的结果返回IEnumerable > - 或其他结构化数据。您只需要使用SelectMany()来展平数据。 – DaveShaw 2011-05-25 20:59:02

0

SelectMany项目序列的每个元素(即,一个对象,它是一个枚举或列表的属性)转换成IEnumerable<T>和并将结果序列的序列到单个序列/ IEnumerable<T>

说了它可以适用于Linq to Entities环境 - 您可以选择选择多个实体的导航属性(相关实体),并将它们放在单个列表中。