Trong một câu hỏi khác trên SO, tôi đã trả lời bằng mã như dưới đây và nhận được một nhận xét rằng truy vấn LINQ có lẽ đã được đánh giá trong mỗi lần lặp của/cho mỗi. Điều đó có đúng không?Truy vấn LINQ này có chạy trên mỗi lần lặp của vòng lặp for-each không?
Tôi biết rằng LINQ-truy vấn không thực hiện trước khi các mục của nó được đánh giá vì vậy có vẻ như cách này để lặp lại kết quả có thể làm cho nó chạy trên mỗi lần lặp?
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
Cũng giống như những gì bạn có là OK, nhưng ít nhất là định dạng với dòng cuối _ vì vậy nó không phải trên một dòng lớn :) –
Vâng. Điều này đánh giá cuối với LINQ sẽ mất một thời gian để làm quen với. – Stefan
Vâng, nhưng nó rất tuyệt khi bạn có được nó, bạn có thể làm một số thứ khá ngọt ngào. –