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)

所以基本上我试图根据组名称上的链接从分配表中获取结果集。 希望这有帮助。

编辑:你能让我知道为什么这个问题有反对票吗? 很高兴知道,所以我可以改变它

Lambda 内部连接转换错误

您需要

在查询中创建新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();
相关文章: