我有一个接受对象数组的方法,并且数组项的数量不是特定的。对象属性是名称和值。有重复的名称,但与不同的值配对,如下所示:
{"Name_1", 100}
{"Name_1", 180}
{"Name_1", 500}
{"Name_2", 40}
{"Name_2", 150}
我想获取每个名称的最大值:
{"Name_1", 500}
{"Name_2", 150}
并返回总计值,即650
答案 0 :(得分:1)
Hello you can try this,
private void button3_Click(object sender, EventArgs e)
{
List<ClassTemp> tempList = new List<ClassTemp>();
tempList.Add(new ClassTemp() {Name= "Name_1", Value = 100});
tempList.Add(new ClassTemp() { Name = "Name_1", Value = 180});
tempList.Add(new ClassTemp() { Name = "Name_1", Value = 500});
tempList.Add(new ClassTemp() { Name = "Name_2", Value = 40});
tempList.Add(new ClassTemp() { Name = "Name_2", Value = 150});
var GroupList = tempList.GroupBy(x => x.Name).Select(grp => new { Name = grp.Key, MaxValue = grp.Max(x => x.Value) }).ToList();
int totalValue = GroupList.Sum(x => x.MaxValue);
}
public class ClassTemp
{
public string Name;
public int Value;
}
答案 1 :(得分:0)
您将需要以下内容:
班级:
public class Class
{
public string Name;
public int Value;
}
然后将它们分组在一起,如下所示:
List<Class> ListOfClass = new List<Class>();
var Grouping = ListOfClass.GroupBy(x => x.Name).Select(group => new {
Name = group.Key,
Value = group.Max(x => x.Value)
}).ToList();