将GridView连接到Linq查询并实现排序、筛选和分页的最佳实践是什么?
我仍然使用DataSet和ObjectDataSource吗?还是有办法使用另一种类型的数据源,让我直接连接到为我处理筛选、排序和分页的LINQ查询结果?
编辑:
UI和DatabaseContext之间存在业务逻辑,因此直接连接到我的ORM不是一种选择。它必须针对LINQ查询结果(IQueryable)。在与ORM交谈之前,我使用单独的Insert/Update/Delete函数来处理业务逻辑。
要在ObjectDataSource中执行此操作,请指定将为您执行此工作的类的名称,例如。
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" TypeName="CustomDAL" SelectMethod="GetData"/>
CustomDAL 类并调用 GetData 方法。
CustomDAL
GetData
也支持排序和分页,但最好是自己实现与限制检索的数据相关的实际逻辑。
EnablePaging="True" 在ODS声明和SelectMethod上添加StartRowIndex和PageSize,使用 Skip 和 Take 提供正确记录的方法,例如。
EnablePaging="True"
Skip
Take
var results= (from user in context.users where user.UserId == userId select user).Skip(StartRowIndex).Take(PageSize).ToList()