首页 > 解决方案 > 如何在 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[]'

标签: c#linqjoinlinq-method-syntax

解决方案


最好使用更接近 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();

推荐阅读