从Linq查询</string>返回IEnumerable <string>

时间:2012-11-21 10:17:16

标签: c# linq ienumerable

我正在尝试从linq查询返回IEnumerable<string>,我收到错误: 无法将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 个答案:

答案 0 :(得分:5)

试试这个

private IEnumerable<string> GetAllMembers(Type type)
    {    

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

        return query;
    }

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

答案 1 :(得分:3)

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

private IEnumerable<string> GetAllMembers(Type type)
{    
    return from member in type.GetMembers()
           select member.GetType() + " " + member.ToString();
}

答案 2 :(得分:2)

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

return from member in type.GetMembers()
       select member.GetType() + " " + member.ToString();

答案 3 :(得分:2)

问题是你的查询返回一个匿名对象,其中一个属性Members是一个字符串,只需更改为只返回字符串:

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

  return query;