使用Linq to Entities在一个请求中选择计数和计数

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

假设我有两种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();
}
c# sql-server entity-framework asp.net-core linq-to-entities
1个回答
0
投票

[合并后,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().
        } 
    }
© www.soinside.com 2019 - 2024. All rights reserved.