Entity Framework - 如何使用 OR 子句列表构建查询

Entity Framework - how to build a query with a list of OR clauses

我正在寻找一种在 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 作为示例)。希望我把问题解释清楚了。

听起来您所描述的相当于 SQL 中的 IN 运算符(例如:WHERE Id IN (1,4,6))。

等效的 Linq 是这样的:

int[] list = {1,4,6};
q = q.Where(x => list.Contains(x.Id))