我必须从数据库中获取数据并使用 linq where 子句过滤数据。我的过滤器是一个整数列,它包含超过 1000 的值。我在代码中所做的是,将这个巨大的数组分成 1000 个块并将其放入基本查询的 where 子句中
int j = 0;
int batchsize = 1000;
while ((j * batchsize) < items.Count())
{
List<long> batch = items.Skip(j * batchsize)
.Take(batchsize).ToList();
prequery = prequery.Where(x => batch.Contains(x.Id));
j++;
}
在 sql 中生成的查询如下,
SELECT
x.name,
x.email
FROM
table x
WHERE
x.Id IN (1,2,3,...,1000) AND
x.Id IN (1001,1002,1003....,2000)
我希望生成如下查询,
SELECT
x.name,
x.email
FROM
table x
WHERE
x.Id IN (1,2,3,...,1000) OR
x.Id IN (1001,1002,1003....,2000)
我可以使用表达式树生成器来实现这一点并动态生成查询吗?如果可以,请帮忙