【发布时间】:2012-10-14 20:35:02
【问题描述】:
嘿,Linq 专家,
我刚刚问了一个非常相似的问题,并且知道解决方案可能非常简单,但我仍然无法理解如何使用 linq 以最有效的方式完成这项相当简单的任务。
我的基本情况是我有一个值列表,例如:
Lst1:
a
a
b
b
c
b
a
c
a
我想创建一个新列表,其中包含 Lst1 中的所有索引,例如 value = "a"。 所以,在这个例子中,我们会:
LstIndexes:
0
1
6
8
现在,我知道我可以使用 Loops 来做到这一点(我宁愿避免使用 Linq),我什至想出了如何通过以下方式使用 Linq 来做到这一点:
LstIndexes= Lst1.Select(Function(item As String, index As Integer) index) _
.Where(Function(index As Integer) Lst1(index) = "a").ToList
我对此的挑战是它遍历列表两次,因此效率低下。
如何使用 Linq 以最有效的方式获得结果?
谢谢!!!!
【问题讨论】:
-
它在哪里迭代列表两次?
-
我想更好的问题是——你为什么认为它会遍历列表两次?