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();
}
}
集合 List<T> 排重方法 Distinct()
最新推荐文章于 2024-03-29 11:59:32 发布