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();
            }
        }
    }
  • 相关阅读:
    实验5 Spark SQL 编程初级实践
    豆瓣基础架构
    淘宝数据魔方技术架构解析
    质量属性的六个常见属性场景--淘宝网
    Win10家庭版WindowsUpdate属性为灰色
    豆瓣的基础架构
    京东618实践:一元抢宝系统的数据库架构优化
    FunData — 电竞大数据系统架构演进
    Ubuntu14.0使用gparted调整分区大小
    二阶段开发冲刺一
  • 原文地址:https://www.cnblogs.com/xuguanghui/p/5973578.html
Copyright © 2011-2022 走看看