c# - 获取 List<T> 中最常见的项目并在此之后排序

标签 c# sql .net linq

我有一个 List<T>已经用 SQL 数据库中的数据填充的对象/类。我想要做的是找出这个表中最常见的用户是谁,并根据最常见的用户并从最常见的用户开始对新列表进行排序

我不知道如何在 Stackoverflow 上设计表格的样式,所以你必须忍受我。

例如,数据库表可以如下所示:

id - userID - randomColumn - randomColumn2
1 - 2 - ExampleText - ExampleText
2 - 2 - ExampleText - ExampleText
3 - 1 - ExampleText - ExampleText
4 - 3 - ExampleText - ExampleText
5 - 2 - ExampleText - ExampleText
6 - 1 - ExampleText - ExampleText

我想使用 LINQ 或 SQL 来格式化它,所以我得到一个看起来像这样的列表
userID - amountColumn - randomColumn
2 - 3 - ExampleText
1 - 2 - ExampleText
3 - 1 - ExampleText

最佳答案

使用 GroupBy LINQ 提供的扩展方法。

// Pseudo code
var grouped = list.GroupBy(item => item.UserID);

然后您可以调用 OrderByDescending对结果进行排序:
var sorted = grouped.OrderByDescending(group => group.Count());

关于c# - 获取 List<T> 中最常见的项目并在此之后排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21434903/

相关文章:

c# - Visual Studio : Build order random?

c# - .NET:CLR是否会自动为堆分配的对象引入基本的线程安全性(锁)?

c# - 反序列化数组总是为元素返回 null 但适用于属性

.net - 如何将 .NET 刻度转换为 python 日期时间?

c# - 我应该在 ServiceController 上调用 Close() 吗?

c# - C#中的double(C++)是什么?

c# - 将刷新 header 添加到 HttpResponseMessage

审计表的 SQL 触发器

mysql - 在子查询中获取值(value)

sql - MySQL:ORDER BY无法正常工作。正确排序一些行