У меня проблема со скоростью в следующей ситуации:
БД SQL Server размещается в среде общего хостинга, доступ к которой осуществляется через строку DSL 2MBytes
Существует таблица результатов соревнований, котораясодержит около 32 строк на соревнование.
Когда я отображаю строки результатов для данного соревнования в представлении данных, я использую 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 строки ... Only ...
Использование 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).
OfКонечно, я могу выполнять итерацию по строкам DGV, но я больше походил на использование LINQ ...
Любая подсказка приветствуется ...