2010-01-11 1 views
1

У меня есть datagrid на странице asp.net. Также есть фильтры и кнопка поиска для сетки. У меня есть следующая возможная опция для кодирования:asp.net LINQ vs Datatable

  1. Применить фильтры для сетки внутри хранимой процедуры.
  2. Извлечь все данные для сетки и применить фильтры + искать текст с помощью LINQ.
  3. Извлечь все данные для сетки в datatable и применить фильтр + текст поиска в качестве фильтра данных.

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

ответ

1

2.Fetch все данные для сетки и применить фильтры + поиск текста с помощью LINQ

При использовании LINQ и имеет удаленный источник данных, вы можете использовать IQuerable вы описать, что вы хотят ==> что вы строите дерево выражений, что при ее выполнении интерпретируется (для SQL в вашем случае) (сравните IEnumerable против I Queryable)

Мой голос: Так что попробовать на использовании Linq, как это имеет некоторые преимущества а) типобезопасен б) мой опыт показывает, что LINQ позволяет создавать хорошие структурированные решения, где у вас есть decoraters как Take(10).OrderBy(xx).Skip(30)

Неудобство Я обнаружил, что вы получите меньше контроля на то, что SQL создается, и вы должны потратить некоторое время на настройку ...

Хорошие книги C# 3.0 в ореховой скорлупе LINQPad LINQ в действии

0

Если у вас есть много данных, применение фильтра в базе данных (только выбор точного количества требуемых записей) или в запросе базы данных - хорошая идея. Например, если у вас 3 миллиона записей, и вы показываете только 50 записей за один раз, загружаете только 50 записей, которые вам нужны, и с помощью методов LINQ .Skip(). Take() на странице - хорошая идея. Если вы решите использовать сохраненные procs, это тоже будет жизнеспособным, а работа SP в LINQ и DataTable.

Фильтры, возможно, сложнее применять за пределами базы данных; это можно сделать легко в таблицах данных или LINQ. Это зависит от того, насколько легко или сложно предпринять усилия для применения фильтров, независимо от того, могут ли они быть легко применены в запросе БД, или если вам нужно применять фильтры в коде, загружая все данные и перебирая их.

Если вы идете DataTables или LINQ, то это жизнеспособный подход. LINQ - это новейшая технология и здесь, чтобы остаться; DataSets будет работать некоторое время, но не ожидайте новых функций набора данных, поскольку ADO.NET Entity Framework - это новый набор данных.

Надеюсь, что это имеет смысл.

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

  • Нет связанных вопросов^_^