r<TSource>)
return ((Enumerable.Iterator<TSource>) source).Where(predicate);
if (source is TSource[])
return (IEnumerable<TSource>) new Enumerable.WhereArrayIterator<TSource>((TSource[]) source, predicate);
if (source is List<TSource>)
return (IEnumerable<TSource>) new Enumerable.WhereListIterator<TSource>((List<TSource>) source, predicate);
return (IEnumerable<TSource>) new Enumerable.WhereEnumerableIterator<TSource>(source, predicate);
}
还有一点注意的是,Where()返回的IEnumerable类型,这是另一个故事。
这篇写得短一些,主要觉得讲的内容还是保持内容一致性的好,关于LINQ的学习,下一篇继续吧。
注释:
[1] 自 https://archive.codeplex.com/?p=inputsimulator
[2] 自《深入理解C#》(第3版)Jon Skeet 著 姚琪琳 译