获取对象数组和总计中的MAX个值

时间:2018-12-21 03:41:42

标签: c# arrays object

我有一个接受对象数组的方法,并且数组项的数量不是特定的。对象属性是名称。有重复的名称,但与不同的配对,如下所示:

{"Name_1", 100}
{"Name_1", 180}
{"Name_1", 500}
{"Name_2", 40}
{"Name_2", 150}

我想获取每个名称的最大

{"Name_1", 500}
{"Name_2", 150}

并返回总计,即650

2 个答案:

答案 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();