【发布时间】:2008-12-02 02:34:45
【问题描述】:
在关于 SO 的另一个问题中,我回答了如下代码,并得到评论说 LINQ 查询可能在 for/each 的每次迭代中都进行了评估。这是真的吗?
我知道 LINQ 查询在其项目被评估之前不会执行,所以这种迭代结果的方式似乎可以让它在每次迭代时运行?
Dim d = New Dictionary(Of String, String)()
d.Add("Teststring", "Hello")
d.Add("1TestString1", "World")
d.Add("2TestString2", "Test")
For Each i As String In From e In d Where e.Value.StartsWith("W") Select e.Key
MsgBox("This key has a matching value:" & i)
Next
【问题讨论】:
-
嗯,看起来你所拥有的还可以,但至少要使用行尾的格式 _ 所以它不在一个大行上 :)
-
是的。使用 LINQ 进行后期评估需要一段时间才能熟悉。
-
是的。但是一旦你得到它就很棒,你可以做一些非常甜蜜的事情。
-
虽然有些案例的评估还不算太晚...例如,在下面的示例中添加“order by”:)
标签: linq enumeration