来自:http://outofmemory.cn/code-snippet/1888/c-usage-linq-yichu-list-de-repeat-item
假定我有如下列表信息:
1 Item1 IT00001 $100
2 Item2 IT00002 $200
3 Item3 IT00003 $150
1 Item1 IT00001 $100
3 Item3 IT00003 $150
一行为一条数据,如何使用linq移除重复项呢?
var distinctItems = items.Distinct();
如果需要根据某一列的值来移除重复项,就需要实现自己的IEqualityComparer<Item>
类了,如下示例:
class DistinctItemComparer : IEqualityComparer<Item> {
public bool Equals(Item x, Item y) {
return x.Id == y.Id &&
x.Name == y.Name &&
x.Code == y.Code &&
x.Price == y.Price;
}
public int GetHashCode(Item obj) {
return obj.Id.GetHashCode() ^
obj.Name.GetHashCode() ^
obj.Code.GetHashCode() ^
obj.Price.GetHashCode();
}
}
用法如下:
var distinctItems = items.Distinct(new DistinctItemComparer());