我有在ASP.NET 2.0中的Web应用程序中,我需要做的分页。 我的数据访问方法就是拉一个DataSet
从数据库调用,然后将其转换成一个List<Foo>
(其中foo是我喜欢的类型,我拉出DB)和我绑定GridView
它。 我对这个的原因是,我不希望是具有全部通过我的应用程序使用的数据表字符串索引,而且我可以显示逻辑从数据库中通过实现显示逻辑上我的课性质分离。 这也意味着我做的.NET,而不是SQL排序。
为了实现分页,然后,我需要把所有Foo
从数据库中,对列表进行排序,然后拿我想出来的完整列表中显示的内容:
List<Foo> myFoo = MyDB.GetFoos();
myFoo.Sort(new Foo.FooComparer());
List<Foo> toDisplay = new List<Foo>();
for (int i = pageIndex * pageSize; i < (pageIndex + 1) * pageSize && i < myFoo.Count; i++)
{
toDisplay.Add(myFoo[i]);
}
//bind grid
使用足够的元素,这成为延迟的源; 在我的开发机器连接到测试数据库,它需要几乎0.5秒从DB拉动5000条记录时,一个网格在屏幕上进行绑定。
为了解决这个问题,我该怎么有我所有的显示逻辑移动到SQL所以排序和分页可以发生在那里,或者有没有更好的办法?
此外,没有LINQ到SQL解决这个问题? 如果我在我的.NET类实现的自定义属性进行排序,然后使用.Skip(pageIndex * pageSize).Take(pageSize)
,它就会将其转换成SQL在注意到这个问题 ?