您可以使用上进行分组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();
但这是按财产的总频率排序,而不是由唯一用户排序。 ?? – zsharp 2012-04-22 22:18:18
然后你应该澄清你的问题。您希望如何订购清单项目以及应退回的内容? – BrokenGlass 2012-04-22 22:20:32
已更新的答案 - *我认为*这就是你要找的。 – BrokenGlass 2012-04-22 22:25:42