我不确定当前遇到的情况推荐哪种方法。基本上,当我加载Razor页面时,我是从数据库中返回一个用户列表,稍后我要按价格进行排序或按特定的参数进行过滤。目前,数据是从List<MyEntity>
数据库中加载的。
我正在尝试找出哪种方法更好,为什么:
针对每个排序/过滤器对数据库执行查询,这似乎对数据库有很多潜在的查询。
在获取模型时,对我最初填充的列表执行排序和过滤。例如。创建一个采用List<MyEntity>
并对其进行排序的方法,如下所示:
public List<MyEntity> OrderMyEntitiesByPriceAsc(List<PetGuardian>
toOrder)
{
return toOrder.OrderBy(g => g.Price).ToList();
}
然后选择订购选项并提交表格,该方法就会执行。
在Razor页面模型中,我正在按以下方式加载所有实体:
剃刀页面模型:
public async Task OnGet()
{
MyEntities = await _myEntityRepository.GetAllAsync();
}
存储库:
public IQueryable<T> GetAll()
{
return _dbContext.Set<T>().AsQueryable();
}
public async Task<List<T>> GetAllAsync()
{
return await GetAll().ToListAsync();
}
选项2似乎会从额外的查询中省去数据库,但是我不确定排序的异步实现是否正确和良好的做法。两种方法都可以完成工作,我只是想知道您将使用哪个以及为什么。
public Task<List<MyEntity>> OrderMyEntitiesPriceAsc(List<MyEntity> toSort)
{
return toSort.AsQueryable().OrderBy(g => g.Price).ToListAsync();
}