集合 List<T> 排重方法 Distinct()


  
  
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();
}
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值