私はこれを機能させる方法を見つけることができず、誰かがアイデアを持っていることを願っています. 単純化された例は、たとえば整数1〜100のリストを持つことです.3行ごとにグループ化したいので、結果は最初のグループで1,2,3になり、次のグループで4,5,6になります. n番目のレコードごとに取得しますが、必要なのはすべてのレコードであるため、最初、最後、合計、最大などを使用してそれらを集計できます.
ありがとう!
この例は、数値以外のコレクションを照会する場合に機能するはずです。グループ化するオブジェクトにインデックスを射影し、グループ化中に再び削除します。
var studentQuery2 = students
.Select((student, index) => new {student, index})
.GroupBy(g => g.index / 3, i => i.student);
var q = Enumerable.Range(0, 100).GroupBy(x => x/3);
何か不足していますか?
より簡単なアプローチはどうですか:
var index = 0;
var grpOf3s = students.GroupBy(x => index++ / 3);
更新:グループ項目
の値を使用しているKey
場合は、列挙可能なグループをリストに変換する必要があります。そうしないと、Key
アクセスするたびに異なる結果が得られます。
var index = 0;
var grpOf3s = students.GroupBy(x => index++ / 3).ToList();