Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 列表与列表的排序规则_C#_Linq - Fatal编程技术网

C# 列表与列表的排序规则

C# 列表与列表的排序规则,c#,linq,C#,Linq,我有一个对象列表,如下所示 class foo { string name; int number; } var myList = new List<foo>(); 我正在尝试基于myList创建一个新列表,该列表包含名称的单个实例,其中number是使用LINQ的数字总数 我在想 var myNewList = new List<foo>(); var names = myList.Select(t=>t.name).Distinct().To

我有一个对象列表,如下所示

class foo
{
    string name;
    int number;
}

var myList = new List<foo>();
我正在尝试基于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)});
var myNewList=newlist();
var name=myList.Select(t=>t.name).Distinct().ToList();
foreach(名称中的变量n)
添加(newfoo(){name=n,number=myList.Where(t=>t.name==n).Sum(t=>t.number)});

有更简单的方法吗?

按名称对项目进行分组,然后使用
键进行投影,并对值求和:

var result = myList.GroupBy(f => f.name)
                   .Select(g => new foo
                   {
                       name = g.Key,
                       number = g.Sum(f => f.number)
                   }).ToList();

分组。看,谢谢-我真的很喜欢LINQ让生活变得简单的方式!
var result = myList.GroupBy(f => f.name)
                   .Select(g => new foo
                   {
                       name = g.Key,
                       number = g.Sum(f => f.number)
                   }).ToList();