字符串列表,这是我有:LINQ创建从存储在INT指数[]
int[] indexes; // it contains indexes that are "good"
string[] words; // many words
List<string> result;
而且我想这样做代码:
在只有一条线,由LINQ我猜:)如何?
字符串列表,这是我有:LINQ创建从存储在INT指数[]
int[] indexes; // it contains indexes that are "good"
string[] words; // many words
List<string> result;
而且我想这样做代码:
在只有一条线,由LINQ我猜:)如何?
假设一组不同的索引。我们可以抓住每个单词,而不是从单词开始,找到匹配的索引。
List<string> result = indexes.Select(i => words[i]).ToList();
请注意,假设索引小于单词,此版本更快。 (100个指标和20000个单词将在您的2000万次操作和100个在我的操作)。
嗯,不是一个衬垫,但是:
result = Enumerable.Range(0, words.Count())
.Where(indexes.Contains)
.Select(idx => words[idx])
.ToList();
你可以完全写在一行:-) – 2015-01-20 20:02:25
什么处理与Where(indexes.Contains)'?认为你必须写'Where(w => indexes.Contains(w))''。 – 2015-01-20 20:03:25
@EricJ .:只要函数类型匹配有效。在这种情况下,它们都是'Func
这不会让你有' IEnumerable'?仍然需要.ToList()? –
2015-01-20 20:06:16
@EricJ .:问了一个List,但我发现人们倾向于要求他们算法的功能,而不是他们真正需要什么。修正以匹配问题。 – Guvante 2015-01-20 20:07:24
同意,当接口提供更好的代码重用时,人们通常使用具体类而不是接口。 – 2015-01-20 20:13:00