c# - 如何在 C# 中使用 Linq 方法语法检索具有相同外键 id 的多个列值?
问题描述
这有效:
var query = (from user in _context.Users
join role in _context.UserRoles on user.UserID equals role.UserId
where user.Username == username
select role.Role).ToArray();
我如何在方法语法中做同样的事情?
//here role.Role has multiple values
var query2 = _context.Users.Join(_context.UserRoles, u=>u.UserID,ur=>ur.UserId,
(u,ur)=> new { ur.Role }).ToArray();
上面的代码抛出一个错误:
无法将 type<anonymous // 类型字符串 Role>[] 隐式转换为 'string[]'
解决方案
最好使用更接近 SQL 的 LINQ 查询语法,您可以轻松修改查询。无论如何,这是您的翻译:
var query2 = _context.Users
.Where(u => u.Username == username)
.Join(_context.UserRoles, u => u.UserID, ur => ur.UserId, (u,ur) => ur.Role)
.ToArray();
推荐阅读
- html - 识别当今超高分辨率智能手机中的目标设备,以选择要运行的 css 文件
- java - 在不更改 spring-boot-starter-parent 版本的情况下,我应该如何只降级我的 springboot 应用程序运行的 tomcat 服务器
- r - Ops.factor(rf_mod, target) 中的错误:因子的级别集不同
- python - 如何读取 FLIR 红外热像仪生成的 SEQ 文件?
- typescript - Typescript React 项目缺少文件扩展名“tsx”
- python - 随机坐标生成器
- youtube-api - 使用 Video.Insert Java SDK 在 YouTube 上设置地理围栏视频内容
- python - 使用python更新数据库中每一行中的特定字段
- python - 随着搜索深度的增加,Alpha-beta 剪枝代理似乎会选择更差的动作
- c# - 如何在不检索所有行的情况下使用 Entity Framework Core 3.0 实现分组分页?