【问题标题】:Returning IEnumerable<string> from Linq query从 Linq 查询返回 IEnumerable<string>
【发布时间】:2012-11-21 18:36:35
【问题描述】:

我正在尝试从 linq 查询返回 IEnumerable&lt;string&gt;,但出现错误: 无法将IEnumerable&lt;AnonymousType&gt; 转换为IEnumerable&lt;string&gt;

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

private IEnumerable<string> GetAllMembers(Type type)
        {    

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

                 }
                );

            return query;
        }

【问题讨论】:

  • 使用 ToList() 将解决您的问题
  • @Nick - 不,它不会。

标签: c# linq ienumerable


【解决方案1】:

试试这个

private IEnumerable<string> GetAllMembers(Type type)
    {    

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

        return query;
    }

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

【讨论】:

    【解决方案2】:

    您正在使用 Member 属性创建匿名类型。只需返回字符串值,因此您期望 IEnumerable&lt;string&gt;

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多