zuf*_*und 12 c# mysql linq entity-framework
我有Measurement
对象具有相关属性CreationTime
(DateTime)和Reference
(字符串)以及一些其他值.
我想一个高效的LINQ查询写入DbContext
该
Measurement
按给定的方式分组我的对象Reference
CreationTime
中第一个属性Measurement
或CreationTime
属性的平均值对组进行排序numOfEntries
(在后面的步骤中,我计算这些返回组的平均值,但我想这与我的问题无关.)
DbContext本身有一个DbSet<Measurement>
调用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();
Run Code Online (Sandbox Code Playgroud)
如何Measurement
正确选择"最近的"组?
我正在使用Entity Framework 4.4和MySQL数据库(MySql Connector/Net 6.6.4).这个例子是简化的,我可以进一步详细说明和/或在必要时给出一个例子.
谢谢!
Nin*_*Nye 13
这是方法语法(我觉得更容易阅读),但这可能会这样做
更新了帖子评论
用.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();
Run Code Online (Sandbox Code Playgroud)
尝试移动order by
之后group by
:
var groupByReference = (from m in context.Measurements
group m by new { m.Reference } into g
order by g.Avg(i => i.CreationTime)
select g).Take(numOfEntries).ToList();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
95227 次 |
最近记录: |