在我的存储库中,我有一个从数据库中检索车辆制造的方法“AllMakesAsync”:
public async Task<IEnumerable<VehicleMake>> AllMakesAsync()
{
return await _context.VehicleMakes.ToListAsync();
}
在存储库中,我还有“GetVehicleMakesWithPaginationAsync”方法,其中使用了“AllMakesAsync”方法:
public async Task<IEnumerable<VehicleMake>> GetVehicleMakesWithPaginationAsync(string search, int? page, string sort)
{
var makes = await AllMakesAsync();
switch (sort)
{
case "Name desc":
makes = makes.OrderByDescending(x => x.Name);
break;
default:
makes = makes.OrderBy(x => x.Name);
break;
}
if (search == null)
{
return makes.ToList().ToPagedList(page ?? 1, 5);
}
return makes.Where(x => x.Name.StartsWith(search, StringComparison.OrdinalIgnoreCase)).ToList().ToPagedList(page ?? 1, 5);
}
有人告诉我,如果我要对数据集使用过滤,我不应该使用“ToListAsync()”,而应该使用“AsQueryable”。
问题是我不知道如何异步实现“AsQueryable”。
我可以像这样返回“AsQueryable”:
public async Task<IQueryable<VehicleMake>> AllMakesAsync()
{
var vehicleMakes = await _context.VehicleMakes.AsQueryable().ToListAsync();
return vehicleMakes.AsQueryable();
}
但在这里我再次使用“ToListAsync()”,所以不好。
有人可以解释一下如何正确地做到这一点。