gpt4 book ai didi

c# - 在可查询对象的 Include 语句中添加 where 子句

转载 作者:太空狗 更新时间:2023-10-29 23:44:09 25 4
gpt4 key购买 nike

假设我有以下两个表

  • 一个
  • B
  • C

A、B 和 C 表有一个 bool 值“IsEnabled”列。

表之间存在1对多的关系如下:

  • A->B
  • B->C

我正在使用 Entity 框架来查询表,并且使用 C# 进行编程。假设,我需要 A 中的所有列,我执行以下操作:

var query = _context.A;
query.where( <where clause> )

如果我需要包含 B 的列以防止延迟加载,

query.Include ( s => s.B );

问题是,如何通过添加 where 子句来仅选择 IsEnabled = 1 的行来包含 B 的列?我正在寻找类似的东西:

query.Include ( s => s.B.where ( k => k.IsEnabled = 1 )) (这不起作用并抛出运行时异常)

如果我们能得到上面的问题,我想也包括 C 的列和 B 和 C 的 IsEnabled = 1 的行。这可能吗?

最佳答案

Include 用于预先加载关系,但不幸的是, Entity Framework 不支持通过延迟加载或预先加载在服务器端过滤这些集合。

您有两个选择 - 在客户端进行过滤,或者重新安排您的查询以最有效地使用(例如,如果您在 C 之后,请选择 C.Where(c => c.IsEnabled && c.B.IsEnabled && c.B.A.IsEnabled)).

关于c# - 在可查询对象的 Include 语句中添加 where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35928159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com