Если Вам нравится emacs тогда , Xrefactory является хорошим выбором.
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());
If there is something that is throwing off your Distinct query, you might want to look at MoreLinq and use the DistinctBy operator and select distinct objects by id.
var distinct = items.DistinctBy( i => i.Id );
Используйте Distinct ()
, но имейте в виду, что он использует компаратор равенства по умолчанию для сравнения значений, поэтому, если вам нужно что-то сверх этого, вам необходимо реализовать свой собственный компаратор.
См. http://msdn.microsoft.com/en-us/library/bb348436.aspx в качестве примера.