对字典对象组成的List集合进行Lambda表达式的GroupBy

来源:互联网 发布:阿里云 内网穿透 编辑:程序博客网 时间:2024/06/13 15:16

昨天同事问了一个问题,怎么把字典对象组成的List集合进行按code分组,将其qty进行Sum累和。

考虑了C#的Lambda表达对集合的万能性,试了一下,代码如下:


        public static void Main(string[] args)        {            TestLambdaGroupBy();            Console.Read();        }        public static void TestLambdaGroupBy()        {            //创建类型为Dictionary<string, object>的List集合,目的是要将同一code的qty进行汇总            var dic1 = new Dictionary<string, object>();            dic1.Add("code", "code1");            dic1.Add("name", "name1");            dic1.Add("qty", 2);            var dic2 = new Dictionary<string, object>();            dic2.Add("code", "code1");            dic2.Add("name", "name1");            dic2.Add("qty", 7);            var dic3 = new Dictionary<string, object>();            dic3.Add("code", "code2");            dic3.Add("name", "name2");            dic3.Add("qty", 5);            var list = new List<Dictionary<string, object>>();            list.Add(dic1);            list.Add(dic2);            list.Add(dic3);            //利用Lambda表达是的GroupBy函数进行分组            list = list.GroupBy(listItem => listItem["code"]).Select(group =>            {                var dic = new Dictionary<string, object>();                dic.Add("code", group.Key);                dic.Add("name", group.Select(g => g["name"]).First());                dic.Add("qty", group.Sum(g => Convert.ToInt32(g["qty"])));                return dic;            }).ToList();            foreach (var item in list)            {                Console.WriteLine("code: " + item["code"] + " name: " + item["name"] + " qty: " + item["qty"]);            }        }

运行结果:



阅读全文
0 0
原创粉丝点击