Удалить объекты с одинаковыми полями из списка

271
19 мая 2018, 14:10

мне нужно удалить повторяющиеся элементы, где два параметра равны. Удалось удалить элементы, где повторяется только один параметр (Id), вот код:

var items = items.GroupBy(x => x.Id).Select(group => 
            group.OrderBy(x => x.Date).First()).ToList();

Это список на входе:

Id: 1, Type: 2, Date: 12.02.2018
Id: 1, Type: 2, Date: 15.02.2018
Id: 1, Type: 1, Date: 19.02.2018
Id: 2, Type: 2, Date: 12.02.2018

На выходе должно получиться:

Id: 1, Type: 2, Date: 12.02.2018
Id: 1, Type: 1, Date: 19.02.2018
Id: 2, Type: 2, Date: 12.02.2018

Как правильно удалить из списка повторяющиеся элементы, где Id и Type равны?

Answer 1

Воспользуйтесь анонимным классом:

items = items.GroupBy(x => new { x.Id, x.Type })
             .Select(a => a.OrderBy(x => x.Date).First())
             .ToList();

Или кортежем (C# 7.0+):

items = items.GroupBy(x => (x.Id, x.Type))
             .Select(a => a.OrderBy(x => x.Date).First())
             .ToList();
READ ALSO
Уведомление View об изменении ObservableCollection.Count

Уведомление View об изменении ObservableCollection.Count

При добавлении\удалении элемента в коллекции, View не отображает изменения количества элементовТак же как и при изменении статуса в вложенном...

278
подключение OpenGL к GLFW на c#

подключение OpenGL к GLFW на c#

хотел использовать OpenGL и GLFWподключил https://github

239
Условия if else и switch

Условия if else и switch

Возможно ли такое сделать с Switch ?

240
Используя структуры и коллекции .NET Framework, реализовать [требует правки]

Используя структуры и коллекции .NET Framework, реализовать [требует правки]

1Получить от пользователя (путем ввода с консоли) множество строк и сформировать из них список (список 1)

220