要素の削除

http://blogs.wankuma.com/episteme/archive/2007/11/12/107752.aspx
επιστημηさんとこから。

yield好きな私だと、

using System;
using System.Collections.Generic;

class Program
{
    static IEnumerable<T> Remove<T>(IEnumerable<T> objs, Predicate<T> pred)
    {
        foreach (T obj in objs)
            if (!pred (obj))
                yield return obj;
    }

    static void Main (string args)
    {
        int numbers = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
        foreach (int n in Remove (numbers,delegate (int x) { return x % 2 == 0; }))
            Console.WriteLine (n);
    }
}

とかかな。これならIEnumerable全般で使えるし。