【发布时间】:2019-11-20 21:45:52
【问题描述】:
我有以下列表:
List<int> listOfInt = new List<int> {10, 20, 30, 40, 50};
我现在得到一个索引列表,指向要从 listOfInt 中提取的值:
int[] idxList= new int[] { 2, 4, 1 };
现在,我想按索引(根据提供的 idxList)从 listOfInt 中提取所有值到另一个列表中。
这是我想出的,似乎可行,但我想摆脱这个 foreach 循环。如何才能做到这一点?
List<int> newList= new List<int>();
foreach(var idx in idxList) newList.Add( listOfInt.ElementAt(idx) );
解决方案:
{30, 50, 20} 将被写入 newList
【问题讨论】:
-
您说“高效”,但您似乎在寻找更简单/更好看的代码,而不是性能更好的代码,对吧?
-
好吧,这取决于,如果没有 foreach 循环,我们能否做得更高效?
-
不管你喜欢与否,都必须循环一些东西,既然是这样,现在我们要进行微优化了,我建议找一个基准测试器并尝试一些事情
-
好的,谢谢,你是说我的解决方案已经是最优的了吗?
-
这个问题可能比这里更适合codereview.stackexchange.com,但请查看他们的网站指南