zoukankan      html  css  js  c++  java
  • LINQ Distinct()

    using System;
    using System.Collections.Generic;
    using System.Linq;
    
    namespace LinqTest
    {
        class Program
        {
    
            static void Main()
            {
                List<Product> listProduct = new List<Product> {
                        new Product{StockNum=1,ProductNo="01",Tag="a"},
                        new Product{StockNum=1,ProductNo="01",Tag="a"},
                        new Product{StockNum=1,ProductNo="01",Tag="a"},
                        new Product{StockNum=2,ProductNo="01",Tag="b"},
                        new Product{StockNum=2,ProductNo="01",Tag="b"},
                        new Product{StockNum=2,ProductNo="01",Tag="b"},
                        new Product{StockNum=3,ProductNo="02",Tag="c"},
                        new Product{StockNum=4,ProductNo="02",Tag="d"},
                        new Product{StockNum=5,ProductNo="03",Tag="e"},
                    };
    
    
                //去重复
                var listProduct1 = listProduct.Select(s => new
                Product
                {
                    StockNum = s.StockNum,
                    ProductNo = s.ProductNo,
                    Tag = s.Tag
                }).Distinct(new ProductNoComparer()).ToList();
    
                //输出验证
                listProduct1.ForEach(c =>
                {
                    Console.WriteLine("ProductNo={0},StockNum={1},Tag={2}", c.ProductNo, c.StockNum, c.Tag);
                });
    
    
    
                Console.WriteLine("-------------------");
    
    
    
                //去重复
                var listProduct2 = listProduct.Select(s => new
                {
                    s.ProductNo,
                    s.StockNum,
                    s.Tag
                }).Distinct().ToList();
    
                //输出验证
                listProduct2.ForEach(c =>
                {
                    Console.WriteLine("ProductNo={0},StockNum={1},Tag={2}", c.ProductNo, c.StockNum, c.Tag);
                });
                Console.Read();
            }
    
        }
    
        /// <summary>
        /// 产品实体类
        /// </summary>
        class Product
        {
            /// <summary>
            /// 库存
            /// </summary>
            public int StockNum { set; get; }
    
            /// <summary>
            /// 产品编号
            /// </summary>
            public String ProductNo { set; get; }
    
            /// <summary>
            /// 附属标签
            /// </summary>
            public String Tag { set; get; }
        }
    
        /// <summary>
        /// 去"重复"时候的比较器(只要ProductNo相同,即认为是相同记录)
        /// </summary>
        class ProductNoComparer : IEqualityComparer<Product>
        {
            public bool Equals(Product p1, Product p2)
            {
                if (p1 == null)
                    return p2 == null;
                return p1.ProductNo == p2.ProductNo && p1.StockNum == p2.StockNum && p1.Tag == p2.Tag;
            }
    
            public int GetHashCode(Product p)
            {
                if (p == null)
                    return 0;
                return p.ProductNo.GetHashCode();
            }
        }
    }
  • 相关阅读:
    仲兆鹏 160809329 第5次
    仲兆鹏160809329-第四次作业
    160809329 仲兆鹏 3
    张浩飞 160809307 (12)
    160809307 张浩飞
    160809307 张浩飞
    160809307 张浩飞(8)
    160809307 张浩飞(7)
    160809307 张浩飞
    160809307 张浩飞 5
  • 原文地址:https://www.cnblogs.com/xuguanghui/p/5973578.html
Copyright © 2011-2022 走看看