Linq на Linq без базы данных туда и обратно: проблема скорости - PullRequest
0 голосов
/ 14 марта 2011

У меня проблема со скоростью в следующей ситуации:

БД 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 ...

Любая подсказка приветствуется ...

1 Ответ

2 голосов
/ 14 марта 2011

Чтобы убедиться, что ваш запрос выполняется только один раз, а mainQuery является локальным, измените свой первый запрос на:

dim mainQuery = (from c in competResults 
                 where competID = xxx 
                 select c.resultID,  c.resultPosition, c.result).ToList()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...