IAsyncEnumerable или IEnumerable - C#
Формулировка задачи:
Есть метод:
Стоит-ли использовать IAsyncEnumerable или можно обойтись IEnumerable:
В итоге, в первом случае у меня два purse.ToList(), во втором один purse.ToList()
Обращение к бд, вроде как будет одно, но в случае с await purse.ToList() я два раза буду использовать локальный запрос IAsyncEnumerable?
[HttpPost]
public async Task<IActionResult> GetPay(int?[] quantity)
{
if (!quantity.All(q => q == null))
{
IAsyncEnumerable<Money> purse = (await _db.PurseSet.Include(p => p.Money)
.AsNoTracking()
.ToListAsync())
.SelectMany(p => p.Money)
.Where(p => p.PurseId == 2)
.ToAsyncEnumerable();
(await purse.ToList())
.ForEach(m=>m.Quantity = 30);
_db.MoneySet.UpdateRange(await purse.ToList());
await _db.SaveChangesAsync();
return RedirectToAction("Index");
}
return NotFound();
} [HttpPost]
public async Task<IActionResult> GetPay(int?[] quantity)
{
if (!quantity.All(q => q == null))
{
IEnumerable<Money> purse = (await _db.PurseSet.Include(p => p.Money).AsNoTracking().ToListAsync())
.SelectMany(p => p.Money)
.Where(p => p.PurseId == 2);
purse.ToList().ForEach(m=>m.Quantity = 10);
_db.MoneySet.UpdateRange(purse);
await _db.SaveChangesAsync();
return RedirectToAction("Index");
}
return NotFound();
}Решение задачи: «IAsyncEnumerable или IEnumerable»
textual
Листинг программы
IEnumerable<Money> purse = (await _db.PurseSet.Include(p => p.Money) .SelectMany(p => p.Money) .Where(p => p.PurseId == 2) .AsNoTracking() .ToListAsync());