次の形式のデータ構造のフィールドを含む配列があります。
[0] = Record 1 (Name Field)
[1] = Record 1 (ID Field)
[2] = Record 1 (Other Field)
[3] = Record 2 (Name Field)
[4] = Record 2 (ID Field)
[5] = Record 2 (Other Field)
等
これを次のようにコレクションに処理しています。
for (int i = 0; i < components.Length; i = i + 3)
{
results.Add(new MyObj
{
Name = components[i],
Id = components[i + 1],
Other = components[i + 2],
});
}
これは正常に動作しますが、LINQ で同じ出力を達成する良い方法があるかどうか疑問に思っていましたか? ここに機能要件はありません。それができるかどうかに興味があります。
インデックスによるグループ化をいくつか実験しました(ToList()
配列を 'ingした後)。
var groupings = components
.GroupBy(x => components.IndexOf(x) / 3)
.Select(g => g.ToArray())
.Select(a => new
{
Name = a[0],
Id = a[1],
Other = a[2]
});
これは機能しますが、私がやろうとしていることには少しやり過ぎだと思います。for
ループと同じ出力を実現する簡単な方法はありますか?