我有一组数据需要一些处理,但我想拆分工作可用线程。如何将其更改为单个指令,最好是删除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 dataForSingleThreadToProcessin到IEnumerable。
答案 0 :(得分:1)
这听起来像你想要的:
var data = allData.Where(datum => keys.Any(key => datum.StartsWith(key))
.ToList();
答案 1 :(得分:0)
这是在没有for循环的情况下执行代码的直接方式。
var data = keys.SelectMany(k => allData.Where(d => d.StartsWith(k)).ToList();
然而,Jon双向飞碟的答案可能会更有效率。
答案 2 :(得分:0)
这应该做的工作:
dataForSingleThreadToProcess = allData.Where(x => keys.Any(x.StartsWith)).ToList();