c# - Linq join() - 加入两个实体并选择一个

标签 c# linq join

有人可以帮助我进行以下 linq 查询吗?

var userList = _context.Employee.AsQueryable();
var id = 1;
userList = userList                
           .Join(_context.EmployeePermission, 
                     ul => ul.EmployeeId,           
                     p => p.EmployeeId,             
               (userlist, perm) => new { Employee = userList, Permisson = perm }) 
            .Where(empAndPerm => empAndPerm.Permisson.Trading >= 1 && empAndPerm.Permisson.EmployeeId == id)
            .Select(x => x.Employee);

我收到以下错误;
Cannot implicitly convert type
'System.Linq.IQueryable<System.Linq.IQueryable<Models.Employee>>' to
'System.Linq.IQueryable<Models.Employee>'. Are you missing a cast?

如何解决?

最佳答案

您的代码中似乎有打印错误

(userlist, perm) => new { Employee = userList, Permisson = perm })

用户列表 必须替换为 用户列表 . 用户列表 System.Linq.IQueryable在第一行:
var userList = _context.Employee.AsQueryable();

但是用户列表 引用匿名方法的参数是正确的项目。

所以第七行必须改为:
(userlist, perm) => new { Employee = userlist, Permisson = perm })

后记:

您的代码需要一些不在此问题范围内的增强功能。这些增强功能取决于您的业务需求。但我提到了一些潜在的错误:
  • 您的员工在选择后并不明显,所以有一个重复的员工,这有点奇怪。
  • 您使用的是相同的上下文,并且大多数时候您可以使用上下文中定义的导航属性,而不是手动使用 join 方法。

  • DotnetFiddle Sample可能会帮助您选择最适合您需求的方法。

    关于c# - Linq join() - 加入两个实体并选择一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61870871/

    相关文章:

    c# - 运行程序会给我与 Debug模式不同的结果

    c# - XElement.Load 和 XDocument.Load 之间有什么区别?

    c# - 在 C# 中使用 LINQ 查找字符串数组中的确切子字符串

    Mysql多连接计数

    sql - 如何确定两个表之间共享哪些列?

    c# - 微软与mysql同步框架?

    c# - 有没有办法从 ListItem 中获取 Folder 对象?

    c# - ASP.NET MVC 5 - 错误句柄 - 找不到 404 页面

    c# - 按 3 列中的 2 列分组

    mysql - 如何添加 1 个内连接而不是 3 个内连接