我有一个类Items有properties (Id, Name, Code, Price)。
Items
properties (Id, Name, Code, Price)
列表中Items有重复的项目。
例如:
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();
要仅匹配某些属性,请创建一个自定义的相等比较器,例如:
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());