使用多个字段加入linq查询

时间:2015-08-17 22:40:40

标签: c#

我正在使用linq中的多个字段尝试使用连接进行选择查询, 但是编译器给了我关于连接的错误: - join子句中某个表达式的类型不正确

(from allTeamRoles in GetAllTeamRoles()
                    join includedRoles in _jobManagerClient.GetAllJobRoles().Where(x => x.JobId == jobId)
                    on new { allTeamRoles.Id, allTeamRoles.TeamId } equals new { includedRoles.RoleId, includedRoles.TeamId }
                    select allTeamRoles).ToList();

有人可以对此有所了解,这句话有什么问题,谢谢。

1 个答案:

答案 0 :(得分:4)

连接键必须具有相同的属性,但在您的情况下,左键具有Id,TeamId属性,右键具有RoleId,TeamId属性。因此,您必须将Id重命名为RoleId,或者执行相反的操作。

(from allTeamRoles in GetAllTeamRoles()
 join includedRoles in _jobManagerClient.GetAllJobRoles().Where(x => x.JobId == jobId)
 on new { allTeamRoles.Id, allTeamRoles.TeamId } equals new { Id = includedRoles.RoleId, includedRoles.TeamId }
 select allTeamRoles).ToList();