【发布时间】:2013-03-22 13:44:17
【问题描述】:
我有 Measurement 具有相关属性的对象 CreationTime (DateTime) 和 Reference (String) 和一些其他值。
我想写一个高效的 linq 查询到 DbContext
- 按给定的
Reference对我的Measurement对象进行分组 - 按组中第一个
Measurement的CreationTime属性或CreationTime属性的平均值对组进行排序 - 将查询限制为最近的
numOfEntries
(在后面的步骤中,我计算了这些返回组的平均值,但我想这与我的问题无关。)
DbContext 本身有一个名为Measurements的DbSet<Measurement> 持有所有Measurement 对象。
我想出了以下查询,它会生成一个正确排序的组列表,但中间缺少一些组。
var groupByReference = (from m in context.Measurements
orderby m.CreationTime
group m by new { m.Reference } into g
select g).Take(numOfEntries).ToList();
如何正确选择Measurements 的“最新”组?
我正在使用 Entity Framework 4.4 和 MySQL 数据库 (MySql Connector/Net 6.6.4)。这个例子是简化的,我可以更详细地说明和/或在必要时给出一个例子。
谢谢!
【问题讨论】:
-
您是否考虑过从给定点计算时间跨度,然后确定这些时间跨度的平均值,然后根据给定点和平均值计算结果日期,而不是计算“CreationTime 的平均值”时间跨度?
标签: c# mysql linq entity-framework