2013-05-30 31 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(); 

但你可能不會看到,除非你多大的性能提升正在處理數百萬數據行。