LINQ的AsParallel
返回ParallelQuery
。我想知道是否可以更改此行为,以便在不实际更改代码的情况下比较具有和不具有并行性的LINQ语句吗?此行为应类似于Debug.Assert
-如果未设置DEBUG
预处理程序指令,则会对其进行优化。因此,我希望能够使AsParallel
返回相同的类型,而无需将其转换为ParallelQuery
。
我想我可以声明自己的扩展方法(因为我无法覆盖AsParallel
)并在其中分析该预处理程序指令:
public static class MyExtensions
{
#if TURN_OFF_LINQ_PARALLELISM
public static IEnumerable<T> AsControllableParallel<T>(this IEnumerable<T> enumerable)
{
return enumerable;
}
#else
public static ParallelQuery<T> AsControllableParallel<T>(this IEnumerable<T> enumerable)
{
return enumerable.AsParallel();
}
#endif
}
我想知道是否还有其他方法。我要求太多吗?
最佳答案
关于什么
var result =
source
#if TURN_ON_LINQ_PARALLELISM
.AsParallel()
#endif
.Select(value => value.StartsWith("abcd"));
关于c# - LINQ:如何根据上下文修改AsParallel的返回类型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8043163/