Mar*_*tin 2 c# linq iqueryable repository-pattern linq-to-sql
是否有可能返回1个Iqueryable选择?
我有一个方法基本上返回一些记录,但我用它来分页,所以我还需要返回TOTAL记录的数量.它工作,但不是创建一个具有2个属性的具体类(1为计数,1为我的选择)我宁愿坚持IQueryable但我不确定它是否会起作用.
以下是我的COUNT返回的示例:
56
Run Code Online (Sandbox Code Playgroud)
这是指表中的记录金额.
然后我的选择返回一个页面,每页有多个记录,即
ID Name
32 John
33 Peter
34 David
Run Code Online (Sandbox Code Playgroud)
所以你可以看到我实际上有2个选择 - 1表示返回表中的记录数量,1表示从表中返回记录子集.当然我在我的方法(C#)中执行这两个值作为2个单独的查询,所以我有2个iqueryable vars生效,我需要从方法返回两个.
所以我想让我的返回方法符合存储库模式的标准,即返回IQueryable - 但是我该怎么做呢?
我不想创建2个方法,1个用于返回计数,另一个用于返回子集,正如我所说,我不想将返回类型更改为具有2个属性(称为Count)的具体类(例如)和数据.
不,基本上.LINQ-to-SQL 本身支持多个网格,但通常在调用存储过程时,而不是通过IQueryable<T>
.而且由于您不想更改架构,因此无法使用ExecuteQuery<T>
虚拟列的厚颜无耻.所以不行.
但是,您可以执行以下操作(当然要求2次往返服务器):
public static IQueryable<T> GetPage(this IQueryable<T> query,
int skip, int take, out int count)
{
count = query.Count();
return query.Skip(skip).Take(take);
}
Run Code Online (Sandbox Code Playgroud)