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

本文关键字:记录 集合 获取 | 更新日期: 2023-09-27 18:05:03

我有一个表Users和一个表Cities在我的MSSQL

在我的Users表中,我有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)

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

使用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()

我想你已经很接近了。

试题:

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()