使用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();
}
答案

[合并后,skiptake将成为可选参数,因此给它们一个默认值,例如-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 搜索时忽略空字符串

在Linq To Entities中使用多个列联接表

在实体框架和 Linq to Entities 中使用规范模式和表达式

LINQ to Entities 无法识别方法“布尔包含 [Int32]

Linq to Entities - 3 层架构

如何使用 LINQ to Entities 获取字节数组长度?