首页 > 解决方案 > 在 IGrouping 上使用 SelectMany() 时收到不明确的错误

问题描述

当我编写以下代码时,出现错误:

方法 Enumerable.SelectMany 的类型参数不能从用法中推断出来

var model = new Overview()
{
   ModelData = data.GroupBy(g => g.GroupingId1).Select(s => new OverviewdataGrouped()
   {
       Id = s.Key,
       Grouping = s.GroupBy(gr => gr.GroupingId2). Select(se => new OverviewdataGroupedFurther()
       {
           Id= se.Key,
           Grouping2 = se.Any() ? se.SelectMany(sel => sel).ToList() : new List<DataModel>()
       })
   })
};

据我所知,这就是我总是从 中选择数据的IGrouping方式,但由于某种原因,它不能以这种方式工作。有谁知道我错过了什么或问题可能是什么?

(请注意,变量 sel 中SelectMany包含正确的类型(DataModel))

标签: c#linq

解决方案


SelectMany 方法将序列的每个元素投影到 IEnumerable 并将生成的序列展平为一个序列。

您对 SelectMany 方法的使用似乎是多余的,因为se它是分组操作的结果。尝试替换这个:

se.SelectMany(sel => sel).ToList()

这样:

se.ToList()


推荐阅读