在Joseph Albahari的《C#in a Nutshell》一书中,有这样的说法.具体实现如下:
public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource,bool> predicate)
{
foreach (TSource element in source)
if (predicate (element))
yield return element;
}
但在我看来,在这里使用"Foreach"将枚举我们的集合,因此在我们拥有集合的情况下.where(x=>;...).where(x=>;...).ToList()-枚举将发生3次:第一次在第一个WHERE中,第二次在第二个WHERE中,最后在ToList()中.但我在想,LINQ链的整个 idea 就是只列举一次. 我是不是搞错了,只会列举一次?请给我带路