asyn c LINQ запрос - PullRequest
       4

asyn c LINQ запрос

1 голос
/ 09 апреля 2020

Я работаю над запросом LINQ, который должен быть в состоянии выполнить asyn c, но он не оценивается. Пытаясь решить проблему, я нашел эту страницу: MS Page на клиенте против сервера

В нем говорится, что я должен иметь возможность добавить AsAsyncEnumerable к своему LINQ, чтобы заставить его работать. Тем не менее, он даже не компилируется.

У меня есть следующее, которое работает, но работает синхронно:

    AreaLookupTb = _context.AreaLookupTb
                    .AsEnumerable()
                    .GroupJoin(_context.LocationTb, a => a.AreaId, b => b.AreaId, (a, b) => new GroupingStats { ID = a.AreaId, Name = a.Name, Description = a.Description, Count = b.Count() })
                    .OrderBy(n => n.Name)
                    .ToList();

Вы могли бы подумать, что все, что мне нужно, это сделать это асинхронно c:

    AreaLookupTb = await _context.AreaLookupTb
                    .AsAsyncEnumerable()
                    .GroupJoin(_context.LocationTb, a => a.AreaId, b => b.AreaId, (a, b) => new GroupingStats { ID = a.AreaId, Name = a.Name, Description = a.Description, Count = b.Count() })
                    .OrderBy(n => n.Name)
                    .ToListAsync();

Увы, не тот случай. Ошибка, которую дает мне VS2019, такова:

Ошибка CS1061 «IAsyncEnumerable» не содержит определения для «GroupJoin», и доступный метод расширения «GroupJoin», принимающий первый аргумент типа «IAsyncEnumerable», не может Быть найденным (вам не хватает директивы using или ссылки на сборку?)

Любая помощь будет признательна.

1 Ответ

0 голосов
/ 10 апреля 2020

Вы должны конвертировать все Enumerable в AsyncEnumerable:

AreaLookupTb = await _context.AreaLookupTb
                    .ToAsyncEnumerable()
                    .GroupJoin(_context.LocationTb.ToAsyncEnumerable(), a => a.AreaId, b => b.AreaId, (a, b) => new GroupingStats { ID = a.AreaId, Name = a.Name, Description = a.Description, Count = b.Count() })
                    .OrderBy(n => n.Name)
                    .ToListAsync();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...