Lambda 内部连接转换错误
本文关键字:错误 转换 连接 内部 Lambda | 更新日期: 2023-09-27 18:33:55
嘿伙计们,我有以下代码,
public IList<UserGroupAssignmentModel> GetUsersByGroupName(string name)
{
var model = _userGroupAssignmentRepository.Table
.Join(_userGroupsRepository.Table,
x => x.groupId,
y => y.Id,
(x, y) => new { Assignment = x, Group = y })
.Where(xy => xy.Group.GrpName == name)
.ToList();
return model;
}
代码在返回时抱怨我的模型。
"Cannot Convert List<anonymousType#7> to Ilist<userGroupAssignmentModel>"
现在我认为这是因为此查询的结果是从两个表中获取所有字段? 并尝试将其存储到 UserGroupAssignmentModel 的列表中,尽管这只是第一个表。
返回此结果的正确方法是什么?
更新:用户组分配模型包含 4 个字段
(Id, UserId, groupId, DateAssigned)
该模型也用于_userGroupAssignmentRepository。
_userGroupsRepository是由用户组模型制成的,它具有
(Id,grpName, GrpDateCreated, GrpIsdeleted,GrpOrderNum)
所以基本上我试图根据组名称上的链接从分配表中获取结果集。 希望这有帮助。
编辑:你能让我知道为什么这个问题有反对票吗? 很高兴知道,所以我可以改变它
您需要
在查询中创建新UserGroupAssignmentModel
而不是匿名类。
更改此内容
(x, y) => new { Assignment = x, Group = y }
对此
(x, y) => new UserGroupAssignmentModel { Assignment = x, Group = y }
或任何适合创建UserGroupAssignmentModel
的东西。
编辑
或者,如果您在投影之前需要查询中的值,则执行此操作。
var model = _userGroupAssignmentRepository.Table
.Join(_userGroupsRepository.Table,
x => x.groupId,
y => y.Id,
(x, y) => new { Assignment = x, Group = y })
.Where(xy => xy.Group.GrpName == name)
.Select(xy => new UserGroupAssignmentModel(/*pass params here*/)
{
// or set properties here
})
.ToList();