>>31
IEnumerable<T> sample(IEnumerable<T> tailBase)
{
 var e = tailBase;
 while(true)
 {
  var r = e.ElementAt(0);
  e = from v in e where Filter(v) select v;
  yield return r;
 }
}
かなり省いたけど大体こんな感じの。