有计划让 Dapper.net 兼容 IQueryable 接口吗?如果没有,使用 Dapper 和“表达式树”过滤器的解决方法是什么?
不,没有计划这样做。这远远超出了 dapper 试图做的事情。到目前为止,我想说这是对立的。 Dapper core 试图成为那些热爱 SQL 的人的朋友。
查看 Dapper.TQuery NuGet 包。
您可以使用
IQueryable
命名空间中的内置扩展方法IEnumerable
从AsQueryable
获取System.Linq
public IQueryable<Order> GetOrdersAsQuerable()
{
IEnumerable<Order> qry= GetOrders(); //using Query<T>
//use the built-in extension method AsQueryable in System.Linq namespace
return qry.AsQueryable();
}
更新: 虽然它不是真正的 IQueryable,但您可以使用 IQueryable 版本进行绑定,例如 Asp.net 中的 GridView 并有利于排序(无法使用 IEnumerable 版本进行排序)。
IQueryable 的值,例如EF 或 linq2Sql 延迟执行到最后一刻并生成发送到服务器的 sql。但是,Dapper 的故事却有所不同。在 Dapper 中,您可以使用 Query 在参数化 sql 语句中执行所有过滤器并获取 IEnumerable。通过使用 AsQuerable 可以获得额外的好处,并获得动态排序,而您必须在不使用 AsQuerable 的情况下实现它。 看到