2

と:

var q1 = (IQueryable<T>).....;
var q2 = (IQueryable<T>).....;
var q3 = (IQueryable<T>).....;

var qList = new List<IQueryable<T>>{q1, q2, q3};

私はこれをしたい:

var q = q1.Union(q2).Union(q3);

ただし、 、およびを使用するqList代わりに使用します。私は試してみましたが、動作は異なります (クエリ可能なものはデータベースへのクエリであり、1 つのクエリではなくクエリ可能なものごとにクエリを作成します)。q1q2q3qList.SelectManySelectMany

4

1 に答える 1

5

Aggregate拡張メソッドを使用できます。

var q = qList.Aggregate((x, y) => x.Union(y));

または Thomas Levesque の提案に従う:

var q = qList.Aggregate(Queryable.Union);

これにより、 から最初の項目が選択されqList、それが 2 番目の項目と結合され、結果が 3 番目の項目と結合され、というように の各項目について行われqListます。これは実際には のいずれかの評価を必要とせず、他の結合を表すIQueryable<T>new を構築するだけであることに注意してください。IQueryable<T>

于 2013-10-17T20:56:16.433 に答える