【问题标题】:Use where condition in linq's include [duplicate]使用 linq 中的 where 条件包含 [重复]
【发布时间】:2016-12-06 12:41:32
【问题描述】:

如何在包含中使用 where 条件? ProgressItems 是 ICollection 对象。我想获得带有过滤项目的整个目标对象。我该如何解决?

        return _dbContext.Goals
            .Include(p => p.GoalExpectation)
            .Include(p => p.ProgressItems.Where(r => r.Value > 100))
            .SingleOrDefault(p => p.Id == id);

我得到这样的异常

包含路径表达式必须引用导航属性 在类型上定义。使用虚线路径进行参考导航 属性和用于集合导航的 Select 运算符 特性。参数名称:路径

【问题讨论】:

  • Linq To SQL 和实体框架不支持过滤的包含。

标签: c# entity-framework linq exception


【解决方案1】:

include 语句需要一个导航属性(如错误所示)。纯粹从语法上看,您所做的似乎是正确的,但在语义上似乎是错误的,因为Where 不返回导航属性。

【讨论】:

    【解决方案2】:

    你不能,你必须通过使用一个查询来限制它,该查询可以使用过滤器获取包含的项目并将其分配给你的目标对象。

    【讨论】:

      猜你喜欢
      • 2020-05-09
      • 1970-01-01
      • 1970-01-01
      • 2016-11-02
      • 1970-01-01
      • 1970-01-01
      • 2015-08-27
      • 1970-01-01
      • 2014-09-16
      相关资源
      最近更新 更多