无法从'AnonymousType#1'转换为'int'

时间:2014-11-17 20:58:37

标签: c# anonymous-types

我需要获取所有团队成员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 个答案:

答案 0 :(得分:14)

使用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>