IAsyncEnumerable или IEnumerable - C#

Узнай цену своей работы

Формулировка задачи:

Есть метод:
        [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();
        }
Стоит-ли использовать IAsyncEnumerable или можно обойтись IEnumerable:
        [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();
        }
В итоге, в первом случае у меня два purse.ToList(), во втором один purse.ToList() Обращение к бд, вроде как будет одно, но в случае с await purse.ToList() я два раза буду использовать локальный запрос IAsyncEnumerable?

Решение задачи: «IAsyncEnumerable или IEnumerable»

textual
Листинг программы
IEnumerable<Money> purse = (await _db.PurseSet.Include(p => p.Money)
                    .SelectMany(p => p.Money)
                    .Where(p => p.PurseId == 2)
                    .AsNoTracking()
                    .ToListAsync());

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.133 из 5