使用Linq to Entities在一个请求中选择计数和计数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Linq to Entities在一个请求中选择计数和计数相关的知识,希望对你有一定的参考价值。
假设我有两种API方法来获取某页面的总项目数和部分项目。是否有一种方法可以合并这些方法并在需要时获得总计数,并在一个请求中获得这些项目的某些部分?
public async Task<SomeView[]> Get(SomeViewFilter filter, int skip, int take)
{
using var db = dbContext();
return await db
.SomeTable()
.Filter(filter)
.Skip(skip)
.Take(take)
.ToArrayAsync();
}
public async Task<int> Count(SomeViewFilter filter)
{
using var db = dbContext();
return await db
.SomeTable()
.Filter(filter)
.CountAsync();
}
答案
[合并后,skip
和take
将成为可选参数,因此给它们一个默认值,例如-100
(用于区分要输入的判断)
然后将方法的返回类型更改为object
,表示该方法可以返回不同类型的数据。
public async Task<object> Get(SomeViewFilter filter, int skip = -100, int take = -100)
{
using var db = dbContext();
if (skip == -100 && take == -100)
{
return await db
.SomeTable()
.Filter(filter)
.CountAsync();
}
else
{
return await db
.SomeTable()
.Filter(filter)
.Skip(skip)
.Take(take)
.ToArrayAsync().
}
}
以上是关于使用Linq to Entities在一个请求中选择计数和计数的主要内容,如果未能解决你的问题,请参考以下文章
在实体框架和 Linq to Entities 中使用规范模式和表达式