无法从“匿名类型#1”转换为“int”

本文关键字:int 转换 匿名类型 类型 | 更新日期: 2023-09-27 18:30:55

我只需要获取所有团队成员 ID,以便我可以查询联系人表。

var teamMembersIds = (from q in _repository.GetQuery<TeamMember>
                               (t => teamIds.Contains(t.TeamId))
                                select new { q.ResourceContactId }
                     )
                    .ToList();

问题是我需要将其与另一个匿名 id 列表合并。

resContactIds.AddRange(teamMembersIds);

我收到以下错误:

我也试过这个:

var resContactIds = new List<int>();
foreach (var _id in teamMembersIds)
{
   if(resContactIds.Contains(_id))
   {
      resContactIds.Add(_id);
   }
}

我收到以下错误:cannot convert from 'AnonymousType#1' to 'int'

无法从“匿名类型#1”转换为“int”

select new { q.ResourceContactId }选择匿名类型时,如果您想要一个List<int>,请删除new和大括号,例如:

var teamMembersIds = (from q in _repository.GetQuery<TeamMember>
                               (t => teamIds.Contains(t.TeamId))
                                select q.ResourceContactId //here
                     )
                    .ToList();

问题是我需要将其与另一个匿名列表合并 IDS

您的其他列表resContactIds也是List<int>,它不是匿名对象的列表。

还有一件事要补充,您可以在第一个查询中省略调用ToList,因为AddRange可以接受IEnumerable<T>