Olá pessoal,
Eu tenho o seguinte código, estou estudando asyncAwait aqui pelo Alura, porem não entendi muito bem como utilizar.
List<ProdutoVenda> pvs = _context.ProdutosVendas
.Include(pv => pv.Produto).ThenInclude(p => p.Corner)
.Include(pv => pv.Produto).ThenInclude(p => p.Grupo)
.Include(pv => pv.Venda)
.Where(pv => model.Corners.Contains(pv.Produto.Corner.NomeCorner) &&
model.Grupos.Contains(pv.Produto.Grupo.NomeGrupo) &&
Convert.ToDateTime(model.DataInicio) <= Convert.ToDateTime(pv.DataVenda) &&
Convert.ToDateTime(model.DataTermino) >= Convert.ToDateTime(pv.DataVenda))
.ToList();
Qual seria a melhor forma de otimizar essa query ? tenho esses dois modos
Esse:
List<ProdutoVenda> pvs = await getPVSAsync(model, _context);
/...
private async Task<List<ProdutoVenda>> getPVSAsync(RelVendaProdutosViewModel model, Context _context)
{
return await (_context.ProdutosVendas
.Include(pv => pv.Produto).ThenInclude(p => p.Corner)
.Include(pv => pv.Produto).ThenInclude(p => p.Grupo)
.Include(pv => pv.Venda)
.Where(pv => model.Corners.Contains(pv.Produto.Corner.NomeCorner) &&
model.Grupos.Contains(pv.Produto.Grupo.NomeGrupo) &&
Convert.ToDateTime(model.DataInicio) <= Convert.ToDateTime(pv.DataVenda) &&
Convert.ToDateTime(model.DataTermino) >= Convert.ToDateTime(pv.DataVenda)))
.ToListAsync();
}
E esse:
IList<ProdutoVenda> pvs = await getPVSAsync(model, _context);
//...
private async Task<ProdutoVenda[]> getPVSAsync(RelVendaProdutosViewModel model, Context _context)
{
var listaPVS = (from pv in _context.ProdutosVendas
.Include(pv => pv.Produto).ThenInclude(p => p.Corner)
.Include(pv => pv.Produto).ThenInclude(p => p.Grupo)
.Include(pv => pv.Venda)
where model.Corners.Contains(pv.Produto.Corner.NomeCorner) &&
model.Grupos.Contains(pv.Produto.Grupo.NomeGrupo) &&
Convert.ToDateTime(model.DataInicio) <= Convert.ToDateTime(pv.DataVenda) &&
Convert.ToDateTime(model.DataTermino) >= Convert.ToDateTime(pv.DataVenda)
select Task.Factory.StartNew(() => pv));
return await Task.WhenAll(listaPVS);
}
Porém eu não sei se qualquer um dos dois estão certos, como eu deveria fazer ?
Obrigado a todos.