1
我正在尋找一種方式來直接從一個LINQ返回名稱值對列表中的SQL查詢,而無需通過結果具有循環就像我在下面的代碼正在做:如何從Linq到SQL查詢返回名稱/值對列表?
Public Shared Function GetUserTransactionCounts(fromDate As DateTime, toDate As DateTime) As List(Of KeyValuePair(Of String, Integer))
Using dc As New ProntoDataContext()
Dim users As IEnumerable(Of User) = From u In dc.Users Where u.CreatedTransactions.Any(Function(t) t.TSCreate >= fromDate And t.TSCreate <= toDate)
Dim list As New List(Of KeyValuePair(Of String, Integer))
For Each user As User In users
Dim item As New KeyValuePair(Of String, Integer)(user.CommonName, user.CreatedTransactions.Count)
list.Add(item)
Next
Return list
End Using
End Function
我不太擅長VB.NET語法,不得不從C#翻譯。我認爲這應該起作用,但如果沒有,請讓我知道,我會刪除答案。 – dasblinkenlight
對不起,C#會很好 - 我都讀過。我是否正確地說,直到第二行的「list」對象以某種方式被使用之後,實際的SQL語句纔會被觸發?這意味着,使用這種方法沒有第二次去分貝,是正確的? – EdenMachine
@EdenMachine其實,你只是在我的答案中指出了一個錯誤:我將一個'IEnumerable'分配給'List'。我打算在查詢的末尾添加一個'ToList()',但我忘了;我現在做了。我還添加了一個「IEnumerable」的例子,它是在第一次枚舉元素之前不會訪問數據庫的元素。 – dasblinkenlight