Quickest way to find the complement of two collections in C#
问题 I have two collections of type ICollection<MyType> called c1 and c2 . I'd like to find the set of items that are in c2 that are not in c1 , where the heuristic for equality is the Id property on MyType . What is the quickest way to perform this in C# (3.0)? 回答1: Use Enumerable.Except and specifically the overload that accepts an IEqualityComparer<MyType> : var complement = c2.Except(c1, new MyTypeEqualityComparer()); Note that this produces the set difference and thus duplicates in c2 will