Union, Intersect, Except: Set theory in C#
On this page
Set Operations
LINQ provides native implementations for classic mathematical set operations. These are invaluable for comparing lists or merging data sources.
1. Union (Merge and Unique)
Combines two sequences and removes duplicates. It's different from Concat (which just appends everything). **Architect Note:** Like Distinct, Union uses a internal HashSet and is an O(N+M) operation.
2. Intersect (The Common Ground)
Returns only the elements that appear in BOTH sequences. Perfect for finding 'Common Friends' or 'Shared Interests' between users.
3. Except (The Difference)
Returns elements from the first sequence that do NOT appear in the second sequence. **Use Case:** Find 'Inactive Users' by taking (All Users) Except (Recent Logins).
3. Architect Insight
Q: "Do these work on objects?"
Architect Answer: "Only if you implement GetHashCode and Equals correctly. If you don't want to change your class, use the **'By'** variants (added in .NET 6): UnionBy, IntersectBy, and ExceptBy. These allow you to compare based on a specific key (like Id) without custom comparers."