我正在尝试按类型对报告进行分组,并使用 LINQ为每种报告类型返回最近的已创建日期到实体。我做了我的研究并阅读了很多问题,其中大部分都是使用与我相似的查询来解决的:
var query = ctx.DataWorkspace.ApplicationData.Reports
.GroupBy(i => i.ReportType)
.Select(i => new { name = i.Key, y = i.Max(h => h.DateCreated) });
但是我收到了这个错误:
A query cannot return non-Entity types that contain embedded entities
我做错了什么?是因为它是LINQ到实体吗?
答案 0 :(得分:1)
错误消息非常具有描述性。您的匿名类型包含一个类型为实体的属性(name = i.Key
部分)。您不能这样做,因为LINQ to Entities无法跟踪对这些实体的更改。
您可以从ReportType
而不是整个实体中获取一些属性:
var query = ctx.DataWorkspace.ApplicationData.Reports
.GroupBy(i => i.ReportType)
.Select(i => new { name = i.Key.Name, y = i.Max(h => h.DateCreated) });
i.Key.Name
只是一个例子。您的实体可能具有您关注的不同属性/属性。