2013-05-30 30 views
1

我想在datatable通过使用滤波基于优先级的行执行线程执行线程Parallel foreach并行的foreach在数据表中基于行优先

Priority  Name 
2    A 
1    B 
2    C 
3    D 
1    E 

线程应在以下顺序(从优先级1开始执行2,3 ...

只有当优先级1个线程完成优先级2个线程应该启动)

EBACD

回答

1

我不知道如何或为何你wan't使用Parallel.ForEach

这听起来像你可以使用一些PLINQ:

var result = dataTable 
       .AsEnumerable() 
       .Select(r => new { Priority = (int)r["Priority"], Name = (string)r["Name"] }) 
       .AsParallel() 
       .OrderBy(r => r.Priority) 
       .Select(r => r.Name) 
       .ToList(); 

但你可能不会看到,除非你多大的性能提升正在处理数百万数据行。