データベースからデータをフェッチし、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)
式ツリービルダーを使用してこれを達成し、クエリを動的に生成できますか?もしそうなら、助けてください