In another question on SO I answered with code like the one below and got a comment that the LINQ-query probably was evaluated in every iteration of the for/each. Is that true?
I know that LINQ-querys does not executes before its items is evaluated so it seems possible that this way to iterate the result can make it run on every iteration?
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
Related Questions
No related questions found
NO… in a foreach, the ‘GetEnumerator’ is called only once (ever), and that is used going forward.
EDIT: I put a statement here about the result set being stored temporarily… that’s only true for some cases… not this one, so I took it out.
EDIT: Please forgive this for being overly verbose… but I wanted to show you what is happening… so here’s a Console app 🙂
EDIT: This will result in a DateTime, then abc1, then a DateTime, then abc2, then a DateTime, then abc3, then a DateTime.