Возможно ли использовать Except()
для двух списков, имеющих два разных класса, но общее поле? У меня есть List<User1>
и List<User2>
коллекций. Они имеют разные свойства, кроме столбца ИД, и я хочу найти разные записи между ними, используя этот столбец Идентификатор. Я пытаюсь использовать List<>.Except()
но я получаю эту ошибку:IEnumerable.Except() между разными классами с общим полем
The type arguments for method 'System.Linq.Enumerable.Except(System.Collections.Generic.IEnumerable, System.Collections.Generic.IEnumerable)' cannot be inferred from the usage. Try specifying the type arguments explicitly.
Вот что я пытаюсь:
List<User1> list1 = List1();
List<User2> list2 = List2();
var listdiff = list1.Except(list2.Select(row => row.Id));
Что я делаю неправильно?
+1, если вы делаете поиск в 'list2' вместо' list1'. Или без поиска 'var listdiff = list1.Where (user =>! (List2.Any (user2 => user2.Id == user.Id));' –
Yup заметил эту ошибку пару минут назад –
+1: Хороший материал. Будет достаточно эффективным. – Ani