
So you know the Cinderella saying “The good ones go into the pot, the bad ones go into your crop.”?
Well, .NET Linq does have a solution for either one, it’s called Where(). If you use that, your solution probably looks like this:
var evens = list.Where(number => ((number % 2) == 0)); var odds = list.Where(number => ((number % 2) != 0));
But it does not have a solution for both. So I wrote myself one:
public static void Split<T>(this IEnumerable<T> source
, Func<T, Boolean> predicate
, out IEnumerable<T> trueList
, out IEnumerable<T> falseList)
{
trueList = source.Where(predicate);
falseList = source.Except(trueList);
}