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=,ProductNo="",Tag="a"},
new Product{StockNum=,ProductNo="",Tag="a"},
new Product{StockNum=,ProductNo="",Tag="a"},
new Product{StockNum=,ProductNo="",Tag="b"},
new Product{StockNum=,ProductNo="",Tag="b"},
new Product{StockNum=,ProductNo="",Tag="b"},
new Product{StockNum=,ProductNo="",Tag="c"},
new Product{StockNum=,ProductNo="",Tag="d"},
new Product{StockNum=,ProductNo="",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 ;
return p.ProductNo.GetHashCode();
}
}
}

LINQ Distinct()的更多相关文章

  1. linq distinct 不够用了!

    问题引出:在实际中遇到一个问题,要进行集合去重,集合内存储的是引用类型,需要根据id进行去重.这个时候linq 的distinct 就不够用了,对于引用类型,它直接比较地址.测试数据如下: class ...

  2. linq Distinct 去除重复数据

    转载:http://www.cnblogs.com/ldp615/archive/2011/08/01/distinct-entension.html 只可惜linq默认不支持.Distinct(p ...

  3. C# IEqualityComparer 使用方法 Linq Distinct使用方法

    创建 IEqualityComparer的接口类必须实现Equals和GetHashCode方法 public class TipComparer : IEqualityComparer<Tip ...

  4. Linq Distinct List 去重复

    //调用 return producePlantlst.Distinct(new item_collection_DistinctBy_item1()).ToList(); //方法 public c ...

  5. linq Distinct 自定义去重字段

    一.定义 1.Falcon_PumpX_Equal_Comparer :类名,随便取名 2.IEqualityComparer:必须继承这个接口 3.Falcon_PumpX:需要去重的对象 4.IE ...

  6. Linq Distinct 自定义比较

    private class MyMenuComparer : IEqualityComparer { public bool Equals(ParMenu x, ParMenu y){ return ...

  7. Linq使用Distinct删除重复数据时如何指定所要依据的成员属性zz

    最近项目中在用Linq Distinct想要将重复的资料去除时,发现它跟Any之类的方法有点不太一样,不能很直觉的在呼叫时直接带入重复数据判断的处理逻辑,所以当我们要用某个成员属性做重复数据的判断时, ...

  8. Distinct删除重复数据时 自定义的方法比较【转】

    最近项目中在用Linq Distinct想要将重复的资料去除时,发现它跟Any之类的方法有点不太一样,不能很直觉的在呼叫时直接带入重复数据判断的处理逻辑,所以当我们要用某个成员属性做重复数据的判断时, ...

  9. Asp.net之LINQ入门视频教程

    当前位置: 主页 > 编程开发 > Asp.net视频教程 > Asp.net之LINQ入门视频教程 > http://www.xin1234.com/Program/Aspn ...

随机推荐

  1. classloader加载的双亲委托模式

    要深入了解ClassLoader,首先就要知道ClassLoader是用来干什么的,顾名思义,它就是用来加载Class文件到JVM,以供程序使用 的.我们知道,java程序可以动态加载类定义,而这个动 ...

  2. Hive实战之Youtube数据集

    1 数据来源 本次实战的数据来自于"YouTube视频统计与社交网络"的数据集,是西蒙弗雷泽大学计算机学院在2008年所爬取的数据 数据集地址 1. 1 Youtube视频表格式如 ...

  3. 列表操作之定义,切片(取元素)(Python)

    学完列表,元组,字典,集合以后,发现他们长的有些像,傻傻分不清,现在回顾下,以代码为例进行分析每一种操作的属性.(英语不佳,错误请忽略) 举栗如下:names = ["hbb",' ...

  4. c# 多线程 创建对象实例

    本次的标题是我在写单例模式的博客时遇到的问题,所以今天专门写了的demo让自己记住怎么简单的使用多线程. 一直纠结的是怎么在for循环中多次实例化对象,好复现单例模式在没有加锁的情况下出现多个实例对象 ...

  5. python爬虫从入门到放弃(一)之初识爬虫

    整理这个文档的初衷是自己开始学习的时候没有找到好的教程和文本资料,自己整理一份这样的资料希望能对小伙伴有帮助 什么是爬虫? 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页 ...

  6. (转) Eclipse Maven 编译错误 Dynamic Web Module 3.1 requires Java 1.7 or newer 解决方案

    场景:在导入Maven项目时候遇到如下错误. 1 问题描述及解决 Eclipse Maven 开发一个 jee 项目时,编译时遇到以下错误:Description Resource Path Loca ...

  7. LeetCode-Triangle[dp]

    Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent n ...

  8. 【CSS】font样式简写(转)- 不是很建议简写

    一.字体属性主要包括下面几个 font-family,font-style,font-variant,font-weight,font-size,font font-family(字体族): “Ari ...

  9. C# 接口基础学习

    什么是接口  接口,在表面上是由几个没有主体代码的方法.属性.索引器.事件,或者它们的组合的集合体,有唯一的名称,可以被类或结构或者其他接口所实现(或者也可以说继承).它在形式上可能是如下的样子: i ...

  10. Linux(7)chmod解析

    在UNIX和Linux的操作系统中, 每个文件(文件夹也被看作是文件)都按读, 写, 运行设定权限 比如用ls -l或ll命令列文件表时, 得到如下输出: -rw-r--r-- 1 apple use ...