2013-09-12 2 views
0

У меня есть страница ASP.net, содержащая текстовое поле, кнопку поиска и вид сетки.Каков наилучший подход для фильтрации?

Первоначально страница будет загружена всеми записями, привязанными к сетке. Здесь есть еще один вариант для пользователя, он может фильтровать записи сетки, введя значение id в текстовое поле.

Поскольку на странице загрузки я привязываю сетку со всеми записями. когда пользователь вводит критерии фильтрации в текстовом поле, я использую запрос linq для его фильтрации.

В моей сетке имеется около 28 000 записей.

Здесь, мой вопрос, какой подход следовать. один подход заключается в передаче id в базу данных и извлечении результата или просто путем запроса набора данных, который уже доступен.

Я использую подход LINQ, который, похоже, занимает больше времени. или это просто моя иллюзия?

Есть ли какие-либо различия между двумя подходами? если это так эффективно?

Просьба разъяснить мне на this..The запроса LINQ я использую:

Var query = from myrow in dtItems.AsEnumerable() 
         where myrow.Field<string>("ID") ==txtID.Text 
         select myrow; 
+0

Не можете ли вы измерить, что более эффективно для вас? – Dennisch

ответ

0
Var query = from myrow in dtItems.AsEnumerable() 
         where myrow.Field<string>("ID") ==txtID.Text 
         select myrow; 

Использование AsEnumerable означает, что все записи загружаются и фильтр применяется к коллекции в памяти.

Если вы просто опустите AsEnumerable, вы должны получить Queryable и где применяется в SQL, так что вы загружаете только соответствующие строки.

Однако, если вы уверены, что у вас уже есть элементы в памяти, это должно быть быстрее запросить их, чем вызвать в базу данных ... вам нужно профайл кода и посмотреть, какие из них лучше всего работают.

+0

Итак, теперь я удаляю Enumerable() сейчас. –

+0

Если у вас нет причины добавлять AsEnumerable, я бы сказал, что это ненужный шаг. Он отбрасывает вашу коллекцию, поэтому добавляет накладные расходы (если только небольшая сумма). –

+0

Но, это ошибка, если не использовать ASEnumerable. –

Смежные вопросы