Linq 按日期时间分组的实体框架
每5分钟在sql server表中添加一行。这些字段是: 日期时间标记,整数总计 使用entity framework,我想使用过去三个月的平均值填充一个新列表,该列表涵盖整个星期的五分钟值Linq 按日期时间分组的实体框架,linq,datetime,entity-framework-4,Linq,Datetime,Entity Framework 4,每5分钟在sql server表中添加一行。这些字段是: 日期时间标记,整数总计 使用entity framework,我想使用过去三个月的平均值填充一个新列表,该列表涵盖整个星期的五分钟值 我如何使用实体框架来实现这一点?假设您的日志确实精确到“五分钟”,并且我非常理解 ,你想要一个7天*24小时*(60/5)分钟的列表,那么2016年的结果如何 //define a startDate var beginningDate = <the date 3 month ago to start
我如何使用实体框架来实现这一点?假设您的日志确实精确到“五分钟”,并且我非常理解 ,你想要一个7天*24小时*(60/5)分钟的列表,那么2016年的结果如何
//define a startDate
var beginningDate = <the date 3 month ago to start with>;
//get the endDate
var endDate = beginningDate.AddMonths(3);
var list = myTable.Where(m => m.TimeMark >= beginningDate && m.TimeMark <=endDate)
//group by dayofWeek, hour and minute will give you data for each distinct day of week, hour and minutes
.GroupBy(m => new {
dayofWeek = SqlFunctions.DatePart("weekday", m.TimeMark),
hour = SqlFunction.DatePart("hour", m.TimeMark),
minute = SqlFunctions.DatePart("minute", m.TimeMark)
})
.Select(g => new {
g.Key.dayofWeek,
g.Key.hour,
g.Key.minute,
total = g.Average(x => x.Total)
});
//定义起始日期
var起始日期=;
//获取结束日期
var endDate=开始日期。添加月份(3);
var list=myTable.Where(m=>m.TimeMark>=beginningDate&&m.TimeMark new{
dayofWeek=SqlFunctions.DatePart(“weekday”,m.TimeMark),
hour=SqlFunction.DatePart(“hour”,m.TimeMark),
分钟=SqlFunctions.DatePart(“分钟”,m.TimeMark)
})
.选择(g=>new{
g、 基奥夫周,
g、 关键时刻,
g、 关键时刻,
总计=g.平均值(x=>x.总计)
});
这个问题在我看来并不清楚(“用过去三个月的总数平均值计算,整个五分钟的一周”),而且你也没有表现出任何尝试。。。您能更新您的问题吗?好的,日志表每5分钟更新一次。我希望能够每五分钟总结一次(平均)过去三个月。是的,根据你对TimeMark的评论。DayOfWeek TimeMark。Hour等不会例外ectensions@user2018978但是它可以与SqlFunctions.DatePart版本一起使用?我不明白在linq中如何使用sql函数?@user2018978请参见msdn:我编辑了答案,您可以尝试此新版本(使用System.Data.Objects.SqlClient;在文件顶部添加),再次感谢!我根本不知道那门课!