linq - 异步 LINQ 查询
问题描述
我正在研究一个应该能够异步完成的 LINQ 查询,但它没有进行评估。在尝试解决这个问题时,我发现了这个页面: 客户端与服务器上的 MS 页面
它指出我应该能够将 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();
你会认为我需要做的就是让它异步:
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”的定义,并且找不到接受“IAsyncEnumerable”类型的第一个参数的可访问扩展方法“GroupJoin”(您是否缺少 using 指令或程序集引用?)
任何帮助,将不胜感激。
解决方案
您应该将所有转换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();
推荐阅读
- javascript - 一页上的许多多个图像上传按钮的相同jquery
- node.js - Node.js - 异步 - if 语句中的多个内部回调
- orientdb - 是否可以在 orientjs 中使用带有 Classes API 的事务?
- javascript - Giphy API调用乱序返回结果
- php - PHP在重定向之前加载页面
- java - 无法为情况编写 Antlr3 规则
- python - 在Django中提交表单时如何保留现有的查询字符串?
- java - Spring Boot 版本从 1.5.8 更改为 2.0.0
- angular - 如何在 ionic 3 中使用日期选择器插件
- proxy - 如何使用 CUBA Studio 创建应用程序?