我使用LINQ查询遵循正常的foreach,如何使用Parallel.Foreach对其进行转换
foreach (var i in media.Where(x => x is Video)
{
this.Update(i);
}
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做
Parallel.ForEach(media,i =>
{
//LINQ
});
Run Code Online (Sandbox Code Playgroud)
Bli*_*ndy 10
第一个参数Parallel.ForEach
是一个可枚举的,所以显而易见的方法是:
Parallel.ForEach(media.Where(x => x is Video).OrderBy(x => x.Contains("a")), i =>
{
//this.Update(i);
// commented out because you'll probably want to Invoke it
// depending on what it does exactly.
});
Run Code Online (Sandbox Code Playgroud)
Den*_*ich 10
首先,Where(x => x is Video)
可以替换为OfType<Video>()
.
其次,对于流畅的语法,最好使用ParallelEnumerable.ForAll
扩展方法:
media.OfType<Video>()
.AsParallel()
.ForAll(this.Update)
Run Code Online (Sandbox Code Playgroud)