从集合中获取所有外键记录

时间:2014-05-23 14:19:00

标签: c# linq entity-framework

我的 MSSQL 中有 Users 的表和 Cities 的表。

在我的用户表中,我有Id,Age和City_Id,其中包含 Cities 中Id的外键。

我使用 C#进行编程,并且正在使用实体框架,并且想要在所有用户集合中获得所有城市的起点。

我拥有的是:

db.Users.Where(x => x.Age == 18)

如何使用 LINQ 在我的上述用户集合中引用所有城市,而无需使用foreach语句?

喜欢什么?

db.Users.Where(x => x.Age == 18).Select(x => x.Cities)

这显然不起作用。

2 个答案:

答案 0 :(得分:3)

使用SelectMany:

db.Users.Where(x => x.Age == 18).SelectMany(x => x.Cities)

此外,正如Andy指出的那样,考虑重复的可能性是否有效。如果没有添加Distinct:

db.Users.Where(x => x.Age == 18).SelectMany(x => x.Cities).Distinct()

答案 1 :(得分:1)

我认为你已经关闭了。

尝试:

var results = db.Users.Where(u => u.Age == 18).SelectMany(c => c.City)

如果您想要一个强类型的,列举的城市列表,那么:

List<City> results = db.Users.Where(u => u.Age == 18)
                          .SelectMany(c => c.City).ToList()