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
Next Post
Living with StyleCop  25 Jul 2008
Prior Post
Software Development Meme  19 Jul 2008
Related Posts
Using Constructors  27 Feb 2023
An Inconvenient API  18 Feb 2023
Method Archetypes  11 Sep 2022
A bash puzzle, solved  02 Jul 2022
A bash puzzle  25 Jun 2022
Improve your troubleshooting by aggregating errors  11 Jun 2022
Improve your troubleshooting by wrapping errors  28 May 2022
Keep your promises  14 May 2022
When are you done?  18 Apr 2022
Fixing GitHub Authentication  28 Nov 2021
Archives
July 2008
2008