Эффективное пользовательское разбиение на страницы в ASP.NET 2.0 при сортировкеC#

Место общения программистов C#
Anonymous
Эффективное пользовательское разбиение на страницы в ASP.NET 2.0 при сортировке

Сообщение Anonymous »

У меня есть веб-приложение на ASP.NET 2.0, в котором мне нужно выполнить пейджинг. Мой метод доступа к данным — извлечь DataSet из вызова базы данных, затем преобразовать его в List (где Foo — мой тип, который я извлекаю из БД) и привязать мой GridView к нему. Моя причина в том, что я не хотел использовать индексаторы строк в DataTables на протяжении всего моего приложения и что я мог отделить логику отображения от базы данных, реализовав логику отображения в качестве свойств своих классов. Это также означает, что я выполняю сортировку в .NET вместо SQL.

Чтобы реализовать разбиение по страницам, мне нужно вытащить весь Foo из базы данных. , отсортируйте список, затем выберите из полного списка то, что я хочу отобразить:

Код: Выделить всё

List myFoo = MyDB.GetFoos();
myFoo.Sort(new Foo.FooComparer());
List toDisplay = new List();
for (int i = pageIndex * pageSize; i < (pageIndex + 1) * pageSize && i < myFoo.Count; i++)
{
toDisplay.Add(myFoo[i]);
}
//bind grid
При достаточном количестве элементов это становится источником задержки; на моей машине разработки, подключающейся к тестовой базе данных, привязка одной сетки на экране при извлечении 5000 записей из БД занимает почти 0,5 секунды.

Чтобы решить эту проблему, мне придется перенести всю свою логику отображения на SQL, чтобы там можно было выполнять сортировку и разбивку по страницам, или есть лучший способ?

Кроме того, Linq SQL решит эту проблему? Если я сортирую настраиваемое свойство, реализованное в моем классе .NET, а затем использую .Skip(pageIndex * pageSize).Take(pageSize), преобразует ли он это в SQL, как указано в этом вопросе?

Подробнее здесь: https://stackoverflow.com/questions/693 ... le-sorting

Вернуться в «C#»