Dapper.NET 和 IQueryable

问题描述 投票:0回答:3

有计划让 Dapper.net 兼容 IQueryable 接口吗?如果没有,使用 Dapper 和“表达式树”过滤器的解决方法是什么?

c# lambda dapper
3个回答
60
投票

不,没有计划这样做。这远远超出了 dapper 试图做的事情。到目前为止,我想说这是对立的。 Dapper core 试图成为那些热爱 SQL 的人的朋友。


1
投票

查看 Dapper.TQuery NuGet 包。


-3
投票

您可以使用

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 的情况下实现它。 看到

© www.soinside.com 2019 - 2024. All rights reserved.