Удалите дубликаты в списке с помощью linq

Если Вам нравится emacs тогда , Xrefactory является хорошим выбором.

281
задан Çağdaş Tekin 22 October 2009 в 01:26
поделиться

3 ответа

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());
362
ответ дан 23 November 2019 в 01:56
поделиться

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 );
37
ответ дан 23 November 2019 в 01:56
поделиться

Используйте Distinct () , но имейте в виду, что он использует компаратор равенства по умолчанию для сравнения значений, поэтому, если вам нужно что-то сверх этого, вам необходимо реализовать свой собственный компаратор.

См. http://msdn.microsoft.com/en-us/library/bb348436.aspx в качестве примера.

17
ответ дан 23 November 2019 в 01:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: