IList コレクションがあります
public IList<MyObject> Items
そのリストをグループ化し、各グループの最初の要素を取得できます
Items.GroupBy(x => x.Type).Select(grp => grp.First()).ToList();
そのリストをグループ化して、最初の要素 (例: 2 番目) を取得するにはどうすればよいですか??
IList コレクションがあります
public IList<MyObject> Items
そのリストをグループ化し、各グループの最初の要素を取得できます
Items.GroupBy(x => x.Type).Select(grp => grp.First()).ToList();
そのリストをグループ化して、最初の要素 (例: 2 番目) を取得するにはどうすればよいですか??
使用できますEnumerable.ElementAt
:
var everySecond = Items.GroupBy(x => x.Type).Select(grp => grp.ElementAt(1)).ToList();
使用できる項目がそれほど多くない場合は、ElementAtOrDefault
代わりに null を返します (参照型の場合)。
編集:「私はselectedItemを持っていて、それをメイン要素としてグループに表示したい」:
したがって、実際には、特定の条件に一致する最初のものを取得する必要があります。この場合は選択されたものであり、グループを注文して最初のものを取得できます。
var everySelected = Items
.GroupBy(x => x.Type)
.Select(grp => grp.OrderByDescending(x => x == selectedItem).First())
.ToList();
私はOrderByDescending
比較で使用しました(trueが1でfalseが0であると考えてください)。このようにして、選択したアイテムと同じ参照であるすべてのアイテムが最初に来ます(参照の等価性ではなく、それらを比較する方法のロジックに置き換えてください)。