zoukankan      html  css  js  c++  java
  • c#获取多个List<class>合并、并将相同条件下的值累计sum

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                List<strudent> one = new List<strudent>();
                one.Add(new strudent() { age = 2, name = "aaa" });
                one.Add(new strudent() { age = 1, name = "bbb" });
                one.Add(new strudent() { age = 3, name = "ddd" });
                one.Add(new strudent() { age = 55, name = "fff" });
                one.Add(new strudent() { age = 2, name = "ggg" });
                one.Add(new strudent() { age = 12, name = "eee" });
                List<strudent> two = new List<strudent>();
                two.Add(new strudent() { age = 11, name = "aaa" });
                two.Add(new strudent() { age = 22, name = "bbb" });
                two.Add(new strudent() { age = 33, name = "ddd" });
                two.Add(new strudent() { age = 55, name = "fff" });
                two.Add(new strudent() { age = 44, name = "ggg" });
                two.Add(new strudent() { age = 22, name = "eee" });
                two.Add(new strudent() { age = 22, name = "aaaaa" });
                var tt = one.Union(two).ToList();
                var res = from p in tt
                          group p by new { p.name } into g
                          select new { name = g.Key.name, accp = g.Sum(p => p.age) };
    
                tt.ForEach(x =>
                {
                    Console.WriteLine(x.name + "     " + x.age);
                });
                Console.ReadKey();
            }
        }
    
        public class strudent
        {
            public decimal age { get; set; }
            public string name { get; set; }
        }
        public class StudentListEquality : IEqualityComparer<strudent>
        {
            public bool Equals(strudent x, strudent y)
            {
                return x.name == y.name;
            }
            public decimal sum(strudent x, strudent y)
            {
                if (x.name == y.name)
                {
                    return x.age + y.age;
                }
                return 0;
            }
            public int GetHashCode(strudent obj)
            {
                if (obj == null)
                {
                    return 0;
                }
                else
                {
                    return obj.ToString().GetHashCode();
                }
            }
        }
    
    }
  • 相关阅读:
    c++ 单例模式
    c++ 时间格式化
    c++ read
    c++ 时间与字符串转换
    c++ switch case
    HIVE Transform using 用法
    python安装模块
    pip install psutil出错-You are using pip version 10.0.1, however version 18.0 is available.
    centos下安装Loadrunner
    svn-checkout后,循环遍历查找包含某字符串的文件
  • 原文地址:https://www.cnblogs.com/zxbzl/p/4028852.html
Copyright © 2011-2022 走看看