LINQ从存储在int []中的索引创建字符串列表

Ran*_*lph 0 c# linq

这就是我所拥有的:

int[] indexes; // it contains indexes that are "good"
string[] words; // many words
List<string> result;
Run Code Online (Sandbox Code Playgroud)

我想做这个代码:

for (int i = 0; i < words.Count(); ++i)
    if (indexes.Contains(i))
        result.Add(words[i]);
Run Code Online (Sandbox Code Playgroud)

只有一行,LINQ我猜:)怎么样?

Guv*_*nte 7

假设一组不同的索引.我们可以抓住每个单词而不是从单词开始并找到匹配的索引.

List<string> result = indexes.Select(i => words[i]).ToList();
Run Code Online (Sandbox Code Playgroud)

请注意,假设索引小于单词,此版本要快得多.(100个索引和20,000个单词将是你的2000万次操作和我的100次操作).

  • @EricJ.:问题要求列表,但我发现人们倾向于询问他们的算法功能,而不是他们实际需要的功能.已修复以匹配问题. (2认同)