I have Measurement
具有相关属性的对象CreationTime
(日期时间)和Reference
(字符串)和一些其他值。
我想编写一个高效的 linq 查询DbContext
that
- 分组我的
Measurement
给定的对象Reference
- 通过以下任一方式对组进行排序
CreationTime
第一个的属性Measurement
来自该组或平均数CreationTime
特性
- 将查询限制为最近的
numOfEntries
(在后面的步骤中,我计算这些返回组的平均值,但我想这与我的问题无关。)
DbContext 本身有一个DbSet<Measurement>
called Measurements
持有所有Measurement
对象。
我提出了以下查询,该查询会产生一个排序正确但缺少中间一些组的组列表。
var groupByReference = (from m in context.Measurements
orderby m.CreationTime
group m by new { m.Reference } into g
select g).Take(numOfEntries).ToList();
如何选择“最近”的组Measurement
正确吗?
我将 Entity Framework 4.4 与 MySQL 数据库 (MySql Connector/Net 6.6.4) 一起使用。这个例子被简化了,如果需要的话我可以更详细地讨论和/或给出一个例子。
Thanks!
这是方法语法(我发现它更容易阅读),但这可能会做到这一点
更新了帖子评论
Use .FirstOrDefault()
代替.First()
关于平均日期,您可能必须暂时放弃该排序,因为我目前无法访问 IDE
var groupByReference = context.Measurements
.GroupBy(m => m.Reference)
.Select(g => new {Creation = g.FirstOrDefault().CreationTime,
// Avg = g.Average(m => m.CreationTime.Ticks),
Items = g })
.OrderBy(x => x.Creation)
// .ThenBy(x => x.Avg)
.Take(numOfEntries)
.ToList();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)