でグループ化を使用しProperty
、各グループのカウント数でグループを並べ替えてから、次を使用してリストを再び平坦化できSelectMany()
ます。
var items = myList.GroupBy(x => x.Property)
.OrderByDescending(g => g.Count())
.SelectMany(g => g);
.ToList();
あなたの質問から、重複を表示するかどうか、およびUserID
. そうでない場合は、グループのキーを選択してList<string>
、一意のプロパティ値を目的の順序で指定できます。
var props = myList.GroupBy(x => x.Property)
.OrderByDescending(g => g.Count())
.Select(g => g.Key);
.ToList();
編集:
これは、実際に探しているもののように思えます。グループは、特定のプロパティを持つ一意のユーザーの数によって並べ替えられます。
var props = myList.GroupBy(x => x.Property)
.OrderByDescending(g => g.Select(x=> x.UserID)
.Distinct()
.Count())
.Select(g => g.Key);
.ToList();