【发布时间】:2021-11-11 18:22:06
【问题描述】:
我正在寻找一种在 EF 查询中链接多个 OR 子句的方法。
这是一个示例函数,当使用包含恰好 2 个元素的参数 int[] 调用该函数时,将创建一个包含它们的 OR 子句(当然,少于 2 个元素会导致异常,多于 2 个元素将被忽略):
public async Task<List<MyTable>> MyQuery(DbContext dbContext, int[] list)
{
IQueryable<MyTable> q = dbContext.MyTable;
q = q.Where(x => x.Id == list[0] || x.Id == list[1]);
// here I chain several other clauses...
q = q.Where(x => x.SomeOtherFiled == 123);
return await q.ToListAsync();
}
我想修改此代码,使其对数组的所有元素(1-n;即任意长度)执行 OR 逻辑。在此示例中,我使用的是 int 数据类型,但实际上它可以是任何可以存在于 EF 数据集中的数据类型。几个 AND 条件可以链接在一起(这里我以 SomeOtherFiled 为例)。我希望我能很好地解释这个问题。
【问题讨论】:
-
我看了一下LinqKit,但它似乎是一个相当复杂的主题,并且示例不是很有帮助。还是谢谢。
标签: .net sql-server entity-framework entity-framework-core iqueryable