0
我有以下情況的速度問題:的LINQ LINQ的無數據庫往返:速度問題
的SQL Server數據庫託管在一個共享的主機環境,通過DSL 2M字節行訪問
有一個比賽結果表每個比賽持有32行。
當我在datagridview中顯示給定競爭的結果行時,我使用LINQ生成dgv數據源,然後添加一個額外的計算列。
爲什麼再添加一列? ** 由於Row1.extraColumn的值取決於Row1.Result的值進行比較,Row2.result **
我寫道:
dim mainQuery = from c in competResults
where competID = xxx
select c.resultID, c.resultPosition, c.result
dataGridView1.datasource = mainQuery.ToList
'Prepare and add Exrta Column
dataGridView1.ADD額外的列
記住dgv只有32行... 只有 ...
使用LINQ我有這樣的子查詢:
dim rowA = from q in mainQuery where rowNumber = xxx select q
dim rowB = from q in mainQuery where rowNumber = yyy select q
進行計算和DGV內寫結果,如:
for each R in dgv.rows
if R.cells("rowNumber").value = rowA.RowNumber then R.cells("ExtraColumn)).value = some result
if R.cells("rowNumber").value = rowB.Rownumber then R.cells("ExtraColumn)).value = some result
next
而這需要大約30秒到1分鐘
我想LINQ不會回去在查詢結果已被搜索的查詢時查詢數據庫(當我執行dataGridView1.datasource = CResults.ToList時)。
當然,我可以做的工作通過DGV行迭代,但我更喜歡使用LINQ ...
任何暗示歡迎...
+1現在'mainQuery'不包含結果。它是一個將獲取結果的生成器(工作中的延遲執行)。這將執行查詢,並實際上將'mainQuery'轉換爲結果列表。 – diceguyd30 2011-03-14 17:17:31
@ diceguyd30 - 很好的解釋:) – 2011-03-14 19:28:11
Tjis像一個魅力工作,我回到了LINQ魔術!下來形式1分鐘到3秒!!! – 2011-03-14 21:02:46