Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按日期和小时计数记录的linq等效值_C#_Linq - Fatal编程技术网

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列的日期部分。此

我有一个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
列的日期部分。此代码应适用于:

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() });