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 })
userList必须替换为userlist。 userList指的是System.Linq.IQueryable
第一行:
var userList = _context.Employee.AsQueryable();
但是userlist指的是匿名方法的参数,它是正确的项目。
所以第七行必须改为:
(userlist, perm) => new { Employee = userlist, Permisson = perm })
后记:
您的代码需要一些不在此问题范围内的增强功能。这些增强功能取决于您的业务需求。但我提到了一些潜在的错误:
- 选择后您的员工并不明显,因此有一个重复的员工,这有点奇怪。
- 您正在使用相同的上下文,并且大多数时候您可以使用在上下文中定义的导航属性,而不是手动使用 join 方法。
此DotnetFiddle 示例可能会帮助您选择最适合您需求的方法。
推荐阅读
- spring - 在一个表单中填充两个对象 Thymeleaf
- javascript - Spotfire JsViz 使用 AmCharts 4 库的带有子类别的聚类条形图
- azure - AWS 中的 Azure 监控解决方案
- numpy - 如何从numpy中选择行
- database - InfluxDB - 如何获取最后一个值然后过滤它们而不是 filter->last
- python - TensorFlow 输入形状解释
- python - 如何在 Python 中实现 2D 区间调度?
- python - 如何根据列表对查询集进行排序?
- google-chrome-extension - 允许 '
' 未知或 URL 模式格式错误 - scala - 使用 Option 检查对象中的所有字段是否为空