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 dataForSingleThreadToProcessinto を 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 に答える