As a part of the infrastructure introduced in .NET 3.5 to support the various flavours of LINQ, there are a whole heap of generic extension methods that are available whenever you have IEnumerable<T>.

Two that I’ve found useful recently are Intersect() and Except() - both of these work to filter values out of the sequence.

A couple of examples are the best way to understand them:

// Returns all multiples of three
IEnumerable<int> multiplesOfThree = ...;
// 3, 6, 9, 12, 15, 18, 21, ...

// Returns all multiples of four
IEnumerable<int> multiplesOfFour = ...;
// 4, 8, 12, 16, 20, 24, ...

// Returns multiplesOfThree that are NOT multiplesOfFour
IEnumerable<int> exceptExample = multiplesOfThree.Except(multiplesOfFour);
// 3, 6, 9, 15, 18, 21, 27 ...

// Returns multiplesOfThree that ARE multiplesOfFour
IEnumerable<int> intersectExample = multiplesOfThree.Intersect(multiplesOfThree);
// 12, 24, 36, 48 ...

If you haven’t already, check out the members of Enumerable on MSDN - well worth the effort.

Comments

blog comments powered by Disqus