用列表对列表进行排序
本文关键字:列表 排序 | 更新日期: 2023-09-27 18:01:58
我有一个对象列表,看起来像这样
class foo
{
string name;
int number;
}
var myList = new List<foo>();
myList从SQLite数据库传播,并按名称排序。没有理由不能有多个具有相同名称的条目,因此您可以使用
myList[ = {"paul", 1234},{"paul", 12}, {"becki",99},{"becki", 33}...
我正在尝试创建一个基于myList的新列表,该列表包含名称的单个实例,并使用LINQ将数字作为总数。
我在想像
这样的东西var myNewList = new List<foo>();
var names = myList.Select(t=>t.name).Distinct().ToList();
foreach(var n in names)
myNewList.Add(new foo() {name = n, number = myList.Where(t=>t.name == n).Sum(t=>t.number)});
有更简单的方法吗?
将项目按名称分组,然后与Key
项目进行组合,并将值相加:
var result = myList.GroupBy(f => f.name)
.Select(g => new foo
{
name = g.Key,
number = g.Sum(f => f.number)
}).ToList();