我有一个看起来像这样的对象列表
class foo
{
string name;
int number;
}
var myList = new List<foo>();
myList 从 SQLite 数据库传播并按名称排序。没有理由不能有多个同名条目,因此您可以拥有
myList[ = {"paul", 1234},{"paul", 12}, {"becki",99},{"becki", 33}...
我正在尝试基于 myList 创建一个新列表,其中包含该名称的单个实例,并且 number 是使用 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();
关于c# - list 与 list 的对照,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23508633/