0

我有一组需要处理的数据,但我想拆分可用的工作线程。如何将其更改为单个指令,最好删除 for 循环?

string[] keysForThread;
IEnumerable<string> allData;
List<string> dataForSingleThreadToProcess;

for (int i = 0; i < keys.length; i++)
    dataForSingleThreadToProcess.AddRange(allData.Where(x => x.StartsWith(keys[i])));

我不介意将 string[] keysForThread 更改为 List 和/或 List dataForSingleThreadToProcess 更改为 IEnumerable。

4

3 回答 3

1

听起来你想要:

var data = allData.Where(datum => keys.Any(key => datum.StartsWith(key))
                  .ToList();
于 2012-04-13T09:56:16.507 回答
0

这是在没有 for 循环的情况下执行代码的直接方法。

var data = keys.SelectMany(k => allData.Where(d => d.StartsWith(k)).ToList();

但是,Jon skeet 的回答可能会更有效率。

于 2012-04-13T09:59:08.420 回答
0

这应该做的工作:

dataForSingleThreadToProcess = allData.Where(x => keys.Any(x.StartsWith)).ToList();
于 2012-04-13T10:02:22.890 回答