利用Linq对集合元素合并、去重复处理

时间:2019-09-23
本文章向大家介绍利用Linq对集合元素合并、去重复处理,主要包括利用Linq对集合元素合并、去重复处理使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
 /// <summary>
    /// 商品
    /// </summary>
    public class GoodsInfo
    {
        /// <summary>
        /// 编号
        /// </summary>
        public string GoodsNO { get; set; }
        /// <summary>
        /// 数量
        /// </summary>
        public decimal GoodsNum { get; set; }
        /// </summary>
        /// 描述
        /// </summary>
        public string Desc { get; set; }
        /// </summary>
        /// 描述
        /// </summary>
        public string Other{get;set;}
    }

    class Program
    {
        static void Main(string[] args)
        {
            List<GoodsInfo> list = new List<GoodsInfo>();
            list.Add(new GoodsInfo() { GoodsNO = "NO.01", GoodsNum = 3,Desc="test1",Other="xx"});
            list.Add(new GoodsInfo() { GoodsNO = "NO.02", GoodsNum = 1,Desc="test2",Other="xx"});
            list.Add(new GoodsInfo() { GoodsNO = "NO.01", GoodsNum = 2,Desc="test3",Other="xx"});
            list.Add(new GoodsInfo() { GoodsNO = "NO.03", GoodsNum = 4,Desc="test4",Other="xx"});
            list.Add(new GoodsInfo() { GoodsNO = "NO.02", GoodsNum = 2,Desc="test5",Other="xx"});
            
            /* 
            var s = from p in list
                         group p by p.GoodsNO into g
                         select new
                         {
                             GoodsNO = g.Key,
                             GoodsNum = g.Sum(x => x.GoodsNum),
                             Other=g.First().Other,
                             Desc=string.Join(",", g.Select(t => t.Desc).ToList())
                         };
            */
             var result=list.GroupBy(p => p.GoodsNO ).Select(g => new GoodsInfo { GoodsNO = g.Key,
                             GoodsNum = g.Sum(x => x.GoodsNum),
                             Other = g.First().Other,
                             Desc = string.Join(",", g.Select(t => t.Desc).ToList())});    
            result.ToList().ForEach(x => Console.WriteLine(x.GoodsNO + " " + x.GoodsNum + " " + x.Desc +" " +x.Other));            
        
        }
    }

参考引用:

https://blog.csdn.net/qq_24432127/article/details/82789138

https://www.cnblogs.com/yjmyzz/archive/2012/12/18/2823170.html

原文地址:https://www.cnblogs.com/venje/p/11573495.html