有人可以帮助我进行以下 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);
Run Code Online (Sandbox Code Playgroud)
我收到以下错误;
Cannot implicitly convert type
'System.Linq.IQueryable<System.Linq.IQueryable<Models.Employee>>' to
'System.Linq.IQueryable<Models.Employee>'. Are you missing a cast?
Run Code Online (Sandbox Code Playgroud)
如何解决?
您的代码中似乎存在打字错误
(userlist, perm) => new { Employee = userList, Permisson = perm })
Run Code Online (Sandbox Code Playgroud)
userList必须替换为userlist。 userListSystem.Linq.IQueryable
在第一行引用:
var userList = _context.Employee.AsQueryable();
Run Code Online (Sandbox Code Playgroud)
但userlist引用的是匿名方法的参数,这是正确的项目。
所以第七行必须改为:
(userlist, perm) => new { Employee = userlist, Permisson = perm })
Run Code Online (Sandbox Code Playgroud)
后记:
您的代码需要一些增强功能,这不属于这个问题的范围。这些增强功能取决于您的业务需求。但我提到一些潜在的错误:
此DotnetFiddle 示例可能会帮助您选择最适合您需求的方法。