1

我正在尝试IEnumerable<string>从 linq 查询返回一个,但出现错误:无法转换IEnumerable<AnonymousType>IEnumerable<string>

我不知道如何解决这个问题。

private IEnumerable<string> GetAllMembers(Type type)
        {    

            var query =
                (from member in type.GetMembers()
                 select new
                 {
                     Member = member.GetType() + " " + member.ToString()

                 }
                );

            return query;
        }
4

4 回答 4

5

尝试这个

private IEnumerable<string> GetAllMembers(Type type)
    {    

        var query =
            from member in type.GetMembers()
             select member.GetType() + " " + member.ToString();

        return query;
    }

当我认为您只是想要一个字符串枚举时,您正在创建一个匿名类型的 IEnumerable。

于 2012-11-21T10:20:43.877 回答
3

Member您正在创建具有属性的匿名类型。只需返回字符串值,因此您可以期待IEnumerable<string>

private IEnumerable<string> GetAllMembers(Type type)
{    
    return from member in type.GetMembers()
           select member.GetType() + " " + member.ToString();
}
于 2012-11-21T10:20:08.377 回答
2

问题是您的查询返回一个匿名对象,该对象具有一个Members字符串属性,只需更改为仅返回字符串即可:

 var query =
            (from member in type.GetMembers()
             select member.GetType() + " " + member.ToString()
            );

  return query;
于 2012-11-21T10:21:37.303 回答
2

您从查询中返回匿名类型(由 构造new {}),而不是字符串。例如,您可以像这样修改查询,因此结果是IEnumerable<string>

return from member in type.GetMembers()
       select member.GetType() + " " + member.ToString();
于 2012-11-21T10:20:56.457 回答