Linq List<T>.Distinct() 去除对象重复
来源:互联网 发布:淘宝消费者投诉电话 编辑:程序博客网 时间:2024/05/17 23:28
class ListDistinctDemo
{
static void Main(string[] args)
{
List<Person> personList = new List<Person>(){
new Person(3),//重复数据
new Person(3),
new Person(2),
new Person(1)
};
//使用匿名方法
List<Person> delegateList = personList.Distinct(new Compare<Person>(
delegate(Person x, Person y)
{
if (null == x || null == y) return false;
return x.ID == y.ID;
})).ToList();
delegateList.ForEach(s => Console.WriteLine(s.ID));
//使用 Lambda 表达式
List<Person> lambdaList = personList.Distinct(new Compare<Person>(
(x, y) => (null != x && null != y) && (x.ID == y.ID))).ToList();
lambdaList.ForEach(s => Console.WriteLine(s.ID));
//排序
personList.Sort((x, y) => x.ID.CompareTo(y.ID));
personList.ForEach(s => Console.WriteLine(s.ID));
}
}
public class Person
{
public int ID { get; set; }
public string Name { get; set; }
public Person(int id)
{
this.ID = id;
}
}
public delegate bool EqualsComparer<T>(T x, T y);
public class Compare<T> : IEqualityComparer<T>
{
private EqualsComparer<T> _equalsComparer;
public Compare(EqualsComparer<T> equalsComparer)
{
this._equalsComparer = equalsComparer;
}
public bool Equals(T x, T y)
{
if (null != this._equalsComparer)
return this._equalsComparer(x, y);
else
return false;
}
public int GetHashCode(T obj)
{
return obj.ToString().GetHashCode();
}
{
static void Main(string[] args)
{
List<Person> personList = new List<Person>(){
new Person(3),//重复数据
new Person(3),
new Person(2),
new Person(1)
};
//使用匿名方法
List<Person> delegateList = personList.Distinct(new Compare<Person>(
delegate(Person x, Person y)
{
if (null == x || null == y) return false;
return x.ID == y.ID;
})).ToList();
delegateList.ForEach(s => Console.WriteLine(s.ID));
//使用 Lambda 表达式
List<Person> lambdaList = personList.Distinct(new Compare<Person>(
(x, y) => (null != x && null != y) && (x.ID == y.ID))).ToList();
lambdaList.ForEach(s => Console.WriteLine(s.ID));
//排序
personList.Sort((x, y) => x.ID.CompareTo(y.ID));
personList.ForEach(s => Console.WriteLine(s.ID));
}
}
public class Person
{
public int ID { get; set; }
public string Name { get; set; }
public Person(int id)
{
this.ID = id;
}
}
public delegate bool EqualsComparer<T>(T x, T y);
public class Compare<T> : IEqualityComparer<T>
{
private EqualsComparer<T> _equalsComparer;
public Compare(EqualsComparer<T> equalsComparer)
{
this._equalsComparer = equalsComparer;
}
public bool Equals(T x, T y)
{
if (null != this._equalsComparer)
return this._equalsComparer(x, y);
else
return false;
}
public int GetHashCode(T obj)
{
return obj.ToString().GetHashCode();
}
}
转自http://www.cnblogs.com/csharpx/archive/2010/05/27/1745122.html
0 0
- Linq List<T>.Distinct() 去除对象重复
- List<T>去除重复对象
- LINQ DISTINCT有效去除重复数据
- linq 中Distinct去除重复数据
- linq list去除重复项
- FCL应用技巧之------使用List<T>的Distinct()去除重复元素
- Linq利用Distinct去除重复项(可自己指定)
- Linq 和 list集合 去除重复项
- Linq 和 list集合 去除重复项
- list集合去除重复对象
- list集合去除重复对象
- List集合去除重复对象
- 去除list中的重复对象
- List集合去除重复对象
- list集合去除重复对象
- list集合去除重复对象
- 去除LIST中的重复对象
- list集合去除重复对象
- 正则表达式验证日期
- android中sharedpreference封装思路
- Activity Lifecycle
- android检查版本更新实现思路
- avl树的插入(含单旋转,双旋转)
- Linq List<T>.Distinct() 去除对象重复
- strlen函数实现的两种方法
- 【转】终极 Web 应用性能和压力测试工具 Gor
- web.xml 指定配置路径
- ceph存储 strace命令用法详解
- 多线程之Handler
- hdu5344MZL's simple problem stl set
- 结合MongoDB开发LBS应用
- 9.3栈和队列(九)——动物收容所,先进先出