6

プロパティ(列)を持つIQueryableデータ型を返す があるとします。ID

次のように、クエリをさらにフィルター処理したい (クエリを評価したくない):

メインクエリからの一意のそれぞれについてID、私がしたいのTake(n)n、任意の数値です。

つまり、n一意の ID ごとに最初の行のみを保持したいと考えています。

私は別のものを得ることができますID...

var ids = query.Select(q => q.ID).Distinct();

Take(n)はそれらの残りの部分でできますが、2つを接続することに困惑しています:

query = query.<FOR EACH DISTINCT ID>.Take(n);

受け入れられた答えは機能しますが、大きなテーブルでは遅いです。フォローアップとしてこの質問を書きました。

4

1 に答える 1

6

次のように実行できます。

query = query.GroupBy(q => q.ID).SelectMany(g => g.Take(n));

GroupBy、同一の を持つレコードをまとめてID、グループとして処理できるようにします。SelectManyは各グループを取り、そのメンバーの数を に制限しn、結果を 1 つのフラット リストに戻します。

于 2013-09-10T21:25:25.613 に答える