У меня есть два IList<CustomObject>
, где CustomObject
имеет свойство Name
, которое является string
. Вызвать первый set
, а второй subset
. set
содержит список вещей, которые я только что отображал пользователю в окне многосегментного списка. Те, выбранные пользователем, были помещены в subset
(так subset
гарантированно будет подмножеством set
, следовательно, умные имена;))Определите, какие элементы в списке НЕ находятся в другом списке
Самый простой способ создания третьего IList<CustomObject>
, inverseSubset
, содержащий все CustomObjects, который пользователь НЕ выбрал, из этих двух наборов?
Я пытался LINQ вещи как этот
IEnumerable<CustomObject> inverseSubset = set.Select<CustomObject,CustomObject>(
sp => !subset.ConvertAll<string>(p => p.Name).Contains(sp.Name));
... на основе ответов на подобные вопросы неопределенно, но до сих пор ничего не даже компиляции, гораздо меньше работать: P
Было бы полезно, чтобы сказать, что он должен реализовать IEquatable '' общий интерфейс и обеспечить его собственные методы GetHashCode и 'Equals' для' CustomObject'. –
На самом деле, поскольку оба набора содержат ссылки на те же объекты, я этого не делал. 'IEnumerable inverseSubset = set.Except (подмножество);' работал отлично. –