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); }