c# - 修改 Linq 查询以支持可选关系

标签 c# linq

我的 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/

相关文章:

c# - 根据分组修改列表中元素属性的最佳方法

c# - 用于流畅界面的 IDictionary AddAndReturn 扩展

c# - LINQ 到 SQL : Stored Procedure Results

c# - 如何将空组添加到 Linq 查询结果集中?

c# - 多个 LINQ 表达式和动态属性

c# - 在 C# 中使用 LINQ 填充 DataTable

c# - 在 Linq 查询中使用 if 语句

c# - 在单个异步方法中进行多次等待是否有任何目的

c# - .NET 应用程序不想运行

c# - ListView 多选