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();
}
}
转载于:https://www.cnblogs.com/mschen/p/5126949.html