并行foreach基于行优先级在数据表中执行线程

时间:2013-05-30 06:03:55

标签: c# c#-4.0 task-parallel-library plinq

我想通过使用datatable基于优先级过滤行来在Parallel foreach中执行线程

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

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

只有优先级1线程完成优先级2线程才应该开始)

EBACD

1 个答案:

答案 0 :(得分:1)

我不确定你是怎么或为什么不使用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();

但是,除非您正在使用数百万个数据行,否则您可能不会看到太多的性能提升。