我有一個用戶表,分組到會話中。我想選擇一個陣列對於由多項任務的每個用戶他們在每一屆有:LINQ to SQL:在一個查詢中選擇整數數組
var taskCounts =
from session in gzClasses.e_userLongSessions
orderby session.workerId ascending, session.startTime ascending
group session by session.workerId
into record
select record.Select(s => s.totalTasks).ToArray();
int[][] result = taskCounts.ToArray();
上述理論上的作品,但它導致在一個單獨的SQL查詢爲每個用戶如下圖所示。由於數據庫不是本地的,這需要相當長的時間。有沒有辦法在一個查詢中獲取所有數據,並減少運行大量單個查詢的開銷?
同時,我想確保它僅通過線路傳輸totalTasks
整數值,而不是發送整個數據庫記錄的效率。換句話說,我想從一個遠程數據庫中獲取一組分組整數,並將它們排列成C#程序中的數組。這聽起來很簡單,但我很難讓LINQ來做到這一點。
您的ef上下文中是否啓用了延遲加載?這可以解釋這樣的行爲,因爲對於每個將被枚舉的對象,它將執行不同的查詢。 –
@DimitrisKalaitzis我不知道那是什麼 - 你能給一個指示器顯示如何關閉它,我會再次嘗試這個查詢嗎? –
你使用實體框架嗎?如果你確實可以改變你設置gzClasses的設置。例如gzClasses.ContextOptions.LazyLoadingEnabled = false; –