我想知道有什么规则可以判断一部分 LINQ 代码是否遭受双重枚举?
例如,以下代码可能重复枚举的迹象是什么?还有哪些需要注意的其他迹象?
public static bool MyIsIncreasingMonotonicallyBy<T, TResult>(this IEnumerable<T> list, Func<T, TResult> selector)
where TResult : IComparable<TResult>
{
return list.Zip(list.Skip(1), (a, b) => selector(a).CompareTo(selector(b)) <= 0).All(b => b);
}