嘿伙计们,我有以下代码,
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列表中,尽管这只是第一个表。
什么是返回此结果的正确方法?
更新:UserGroupAssignmentModel包含4个字段
(Id, UserId, groupId, DateAssigned)
此模型也用于_userGroupAssignmentRepository。
_userGroupsRepository由具有
的UserGroupModel构成(Id,grpName, GrpDateCreated, GrpIsdeleted,GrpOrderNum)
所以基本上我试图根据组名上的链接从分配表中获取结果集。希望这会有所帮助。
编辑:你能让我知道为什么这个问题有一个downvote?很高兴知道我可以改变它答案 0 :(得分:2)
您需要在查询中创建新的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();