C# 按日期和小时计数记录的linq等效值
我有一个sql查询,但在c#LINQ中它的等价物是什么 其想法是按日期和时间统计记录-如下所示:C# 按日期和小时计数记录的linq等效值,c#,linq,C#,Linq,我有一个sql查询,但在c#LINQ中它的等价物是什么 其想法是按日期和时间统计记录-如下所示: ForDate OnHour Totals 2016-05-25 9 36 2016-05-25 8 60 2016-05-25 7 70 2016-05-25 6 12 2016-05-24 21 24 2016-05-24 20 72 2016-05-24 19 24 2016-05-24 14 120 您可以使用提取DateAdded列的日期部分。此
ForDate OnHour Totals
2016-05-25 9 36
2016-05-25 8 60
2016-05-25 7 70
2016-05-25 6 12
2016-05-24 21 24
2016-05-24 20 72
2016-05-24 19 24
2016-05-24 14 120
您可以使用提取DateAdded
列的日期部分。此代码应适用于:
var result = context.PartValues
.GroupBy(x => new
{
Date = DbFunctions.TruncateTime(x.DateAdded), //Extract Date only (time part is 0)
Hour = x.DateAdded.Hour
}).Select(g => new
{
g.Key.Date,
g.Key.Hour,
Total = g.Count()
})
.ToList();
请参阅下面的代码:
var results = context.partValues.GroupBy(r =>
new DateTime(r.dateAdded.Year,
r.dateAdded.Month,
r.dateAdded.Day,
r.dateAdded.Hour, 0, 0),
(d, r) => new { date = d, totals = r.Count() });
添加日期的类型是什么?datetime?为什么要尝试将SQL语句转换为LINQ语句?您是在尝试使用LINQtoSQL还是只是在寻找逻辑?你的c#对象在哪里?您正在尝试从c#应用程序调用此SQL语句吗?请说得更清楚些。@YacoubMassad我希望如此。规范说它可以是任何日期或时间类型。我认为OP使用LINQ to SQL,在这种情况下,LINQ不允许在查询中构造
DateTime
。但是,您可以在查询中构造匿名类型,例如new{r.dateAdded.Year,r.dateAdded.Month,r.dateAdded.Day,r.dateAdded.Hour}
。这会起作用。你有不能实例化新datetime的消息来源吗?我目前找不到任何消息。看看这个(第一条评论):还有这个:
var results = context.partValues.GroupBy(r =>
new DateTime(r.dateAdded.Year,
r.dateAdded.Month,
r.dateAdded.Day,
r.dateAdded.Hour, 0, 0),
(d, r) => new { date = d, totals = r.Count() });