集合 List 排重方法 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();
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章