Linq GroupBy表达式引发AnonymousType异常

时间:2019-06-25 16:05:50

标签: c# linq asp.net-core-mvc entity-framework-core asp.net-core-2.0

我有一个查询,该查询返回一个IEnumerable,用于显示值表。

我想通过模型的<H3/>字段(DateTime)对表进行分组(使用StartTime元素。

我更改了模型以使用适当的泛型:

IEnumerable<IGrouping<DateTime, FooViewModel>> routes;

我通过FromSQL查询填充模型:

        routes = (IEnumerable<IGrouping<DateTime, FooViewModel>>)await _context.FooViewModels
            .FromSql(@"SELECT  ..."
            )
            .GroupBy(r => new { r.StartTime.Date })
            .ToListAsync();

虽然代码通过了设计时要求,但在运行时却出现错误:

Unable to cast object of type 'System.Collections.Generic.List`1[System.Linq.IGrouping`2[<>f__AnonymousType5`1[System.DateTime],FooViewModel]]' to type 'System.Collections.Generic.IEnumerable`1[System.Linq.IGrouping`2[System.DateTime,FooViewModel]]'.

我做错了什么?

1 个答案:

答案 0 :(得分:1)

由于错误正试图告诉您,因此您无法将匿名类型作为DateTime传递。

由于视图接受DateTime的分组,因此您需要将DateTime lambda传递给GroupBy(),以使其具有相同的类型。