我的 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)
这显然不起作用。
答案 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()