1

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

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

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

仅当优先级 1 线程完成时才应启动优先级 2 线程)

EBACD

4

1 回答 1

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();

但是,除非您处理数百万行数据,否则您可能不会看到太多的性能提升。

于 2013-05-30T18:32:20.317 回答