두 개의 IList<CustomObject>
이 있습니다. 여기에서 CustomObject
은 Name
속성이 있으며 string
입니다. 첫 번째 전화는 set
이고 두 번째 전화는 subset
입니다. set
에는 다중 선택 목록 상자에서 방금 사용자에게 표시 한 목록이 포함되어 있습니다. 선택한 사용자가 subset
에 배치 된 것들 (그래서 subset
는 set
의 부분 집합, 따라서 영리 이름이 보장된다)를 포함, 세 번째 IList<CustomObject>
, inverseSubset
를 생성하는 가장 간단한 방법은 무엇)목록의 어떤 요소가 다른 목록에 없는지 확인
모든 이 두 세트에서 사용자가 선택하지 않은 CustomObjects?
내가 대답을 막연하게 비슷한 질문을 기반으로 ...이
IEnumerable<CustomObject> inverseSubset = set.Select<CustomObject,CustomObject>(
sp => !subset.ConvertAll<string>(p => p.Name).Contains(sp.Name));
같은 LINQ의 일을 시도했습니다,하지만 지금까지 아무도, 훨씬 적은 작업을 컴파일되지 않습니다 : P
그가'IEquatable'제네릭 인터페이스를 구현하고 제공해야 말을 도움이 될 것입니다 'CustomObject'에 대한 자신의'GetHashCode'와'Equals' 메쏘드. –
실제로, 두 세트에는 동일한 객체에 대한 참조가 포함되어 있기 때문에 그렇게하지 않았습니다. 'IEnumerable inverseSubset = set.Except (하위 집합);'잘 작동했습니다. –