【问题标题】:C#: Cannot convert LINQ result to a list of objects. What's wrong?C#:无法将 LINQ 结果转换为对象列表。怎么了?
【发布时间】:2018-01-03 17:12:41
【问题描述】:

我正在尝试完成一项简单的任务,但我没有找到方法来完成它。我正在尝试将 LINQ 结果转换为对象列表。我遵循this accepted SO answer. 中发布的语法。这是我的代码:

var LinqHallazgos = (from RA_Hallazgos in context.RA_Hallazgos
                            select new
                            {
                                HallazgoId = RA_Hallazgos.HallazgoId,
                                Hallazgo = RA_Hallazgos.Hallazgo
                            });

        List<RA_Hallazgos> Hallazgos = LinqHallazgos.ToList<RA_Hallazgos>();

这是我得到的错误:

它说“LinqHallazgos”是一个 iqueryable,不包含 ToList 的定义。但我在智能感知中看到了“ToList”方法。它还说它期望一个 IEnumerable 但this answer 似乎使用类似的语法。

我做错了什么以及我如何将 LINQ 结果作为特定对象的列表获得??

【问题讨论】:

  • 如果您提出与 IDE 无关的问题,请不要使用“Visual Studio”标签
  • 请以文字形式发布错误消息,其他人无法通过图片搜索此内容。

标签: c# entity-framework list linq


【解决方案1】:

你把这弄得太复杂了。看来您要做的就是将DbSet&lt;RA_Hallazgos&gt; 物化到内存中(从数据库中检索内容)。如果是这种情况,只需在DbSet 上使用ToList() linq 扩展名即可。请注意,它会检索您未指定过滤器的所有内容(即任何限制谓词,如 Where / Take / Skip / 等)。

List<RA_Hallazgos> Hallazgos = context.RA_Hallazgos.ToList();

【讨论】:

    【解决方案2】:

    只需致电.ToList()。您在那里有一个匿名类型(new {}),因此即使您愿意,也无法明确指定类型。

    否则,如果RA_Hallazgos 是实际类型,请使用new RA_Hallazgos{} 避免创建匿名类型。

    【讨论】:

      【解决方案3】:

      试试

      select new RA_Hallazgos
      {
          HallazgoId = RA_Hallazgos.HallazgoId,
          Hallazgo = RA_Hallazgos.Hallazgo
      }
      List<RA_Hallazgos> Hallazgos = LinqHallazgos.ToList()();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-16
        相关资源
        最近更新 更多