我的 linq 查询有问题,其中连接记录为空。
我有 3 个模型:
位置、公司和人员。
- 一个人必须在一家公司工作
- 一个人可能有一个位置
- 一个公司可以有多个人
我正在使用以下 LINQ 查询来检索特定公司所有人员的所有位置的不同列表:
locations =
db.Companies.Where(c => c.Name == company.Name)
.SelectMany(c => c.People)
.Select(p => p.Location)
.Distinct()
.ToList();
如果从此查询中检索到的 Peron 没有位置(位置对于 Person 是可选的),就会出现问题。
在这种情况下,由于对象引用未设置到对象,以下获取每个位置名称的查询失败:
locations.Select(g => g.Name).ToList()
如何更改以上行以忽略检索到的人员记录没有位置的记录?
最佳答案
试试这个:
locations =
db.Companies.Where(c => c.Name == company.Name)
.SelectMany(c => c.People)
.Where(p => p.Location !=null)
.Select(p => p.Location)
.Distinct()
.ToList();
干杯
关于c# - 修改 Linq 查询以支持可选关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22470169/