public static List <TResult> Select <T, TResult>(this IEnumerable <T> collection, JudgeDelegate <T> judger, SelectorDelegate <T, TResult> selector)
        {
            List <TResult> ret  = new List <TResult> ();
            var            iter = collection.GetEnumerator();

            while (iter.MoveNext())
            {
                if (judger == null || judger(iter.Current))
                {
                    ret.Add(selector(iter.Current));
                }
            }
            return(ret);
        }
 public static List <T> Select <T>(this IEnumerable <T> collection, JudgeDelegate <T> judger)
 {
     return(collection.Select(judger, e => e));
 }