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

Ric*_*d77 4 c# anonymous-types

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

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

问题是我需要将它与另一个匿名的id列表合并.

resContactIds.AddRange(teamMembersIds);
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

我也尝试了这个:

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

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

Hab*_*bib 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();
Run Code Online (Sandbox Code Playgroud)

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

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

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