24

私はこれを機能させる方法を見つけることができず、誰かがアイデアを持っていることを願っています. 単純化された例は、たとえば整数1〜100のリストを持つことです.3行ごとにグループ化したいので、結果は最初のグループで1,2,3になり、次のグループで4,5,6になります. n番目のレコードごとに取得しますが、必要なのはすべてのレコードであるため、最初、最後、合計、最大などを使用してそれらを集計できます.

ありがとう!

4

3 に答える 3

42

この例は、数値以外のコレクションを照会する場合に機能するはずです。グループ化するオブジェクトにインデックスを射影し、グループ化中に再び削除します。

var studentQuery2 = students
    .Select((student, index) => new {student, index})
    .GroupBy(g => g.index / 3, i => i.student);
于 2009-05-13T20:58:39.717 に答える
31
var q = Enumerable.Range(0, 100).GroupBy(x => x/3);

何か不足していますか?

于 2009-05-13T20:53:04.313 に答える
2

より簡単なアプローチはどうですか:

var index = 0;
var grpOf3s = students.GroupBy(x => index++ / 3);

更新:グループ項目 の値を使用しているKey場合は、列挙可能なグループをリストに変換する必要があります。そうしないと、Keyアクセスするたびに異なる結果が得られます。

var index = 0;
var grpOf3s = students.GroupBy(x => index++ / 3).ToList();
于 2017-04-07T14:09:47.943 に答える