Sch*_*999 5 .net c# linq plinq
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
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否还有其他办法.我要求太多了吗?
关于什么
var result =
source
#if TURN_ON_LINQ_PARALLELISM
.AsParallel()
#endif
.Select(value => value.StartsWith("abcd"));
Run Code Online (Sandbox Code Playgroud)