C# List Distinct用法

class ListDistinctDemo
{
static void Main(string[] args)
{
List personList = new List(){
new Person(3),//重复数据
new Person(3),
new Person(2),
new Person(1)
};

//使用匿名方法
List delegateList = personList.Distinct(new Compare(
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 lambdaList = personList.Distinct(new Compare(
(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 x, T y);

public class Compare : IEqualityComparer
{
private EqualsComparer _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();
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值