C# 如何通过LINQ C按天获取datetime组

C# 如何通过LINQ C按天获取datetime组,c#,linq,C#,Linq,我有一个数据表,其中包含整个月的数据。现在我想通过linq按天获取这些数据组。我已经有了这个问题,但我需要一些改变。我的一天从7点开始,到第二天7点结束。我目前的查询是: var query = dt.AsEnumerable() .GroupBy(row => new { day = row.Field<DateTime>("dateandTime"), Code = row.Field<string>("Code"

我有一个数据表,其中包含整个月的数据。现在我想通过linq按天获取这些数据组。我已经有了这个问题,但我需要一些改变。我的一天从7点开始,到第二天7点结束。我目前的查询是:

var query = dt.AsEnumerable()
    .GroupBy(row => new
    {
        day = row.Field<DateTime>("dateandTime"),
        Code = row.Field<string>("Code"),
        Name = row.Field<string>("Name")
    })
    .Select(g => new
    {
        Name = g.Key.Name,
        day = g.Key.day,
        Code = g.Key.Code,
        quantity = g.Count()
    }
        );

格式日期和时间:2014-01-02 05:26:10.567

如何按整月的天数从datatable组中获取数据

我要从7到7的数据。如果月份结束,则最后一个日期数据也应获取下一个日期7点之前的数据。

在相应地将日期/时间调整7小时后,仅按date time值的Day属性分组。当然,如果你真的有多个月/年的时间,那会给你一些奇怪的结果,但是

.GroupBy(row => new
{
    Day = row.Field<DateTime>("dateandTime").AddHours(-7).Day,
    Code = row.Field<string>("Code"),
    Name = row.Field<string>("Name")
})
注意:您需要确保查找一个月数据的原始查询考虑了7小时轮班。另外,如果这7小时的班次实际上是由于时区的原因,可能有更好的选择。

在相应地将日期/时间调整7小时后,只需按date time值的Day属性分组即可。当然,如果你真的有多个月/年的时间,那会给你一些奇怪的结果,但是

.GroupBy(row => new
{
    Day = row.Field<DateTime>("dateandTime").AddHours(-7).Day,
    Code = row.Field<string>("Code"),
    Name = row.Field<string>("Name")
})

注意:您需要确保查找一个月数据的原始查询考虑了7小时轮班。另外,如果这7个小时的轮班实际上是由于时区的原因,可能还有更好的选择。

dateandtime Format是:2014-01-02 05:26:10.567-不,不是,是DateTime…dateandtime是变量名。显然,它是行中的字段名。但是如果它真的是一个DateTime字段,那么它就没有格式-每个值都只是一个DateTime。dateandtime格式是:2014-01-02 05:26:10.567-不,不是,它是一个DateTime…dateandtime是变量名。显然,它是行中的字段名。但如果它真的是一个DateTime字段,那么它就没有格式——每个值都只是一个DateTime。我说我的一天从7点开始,到第二天7点结束。上面的查询给出了12到12的数据。@bogojane:啊,我错过了那一点。虽然很容易修复-编辑。谢谢@Jon Skeet,这正是我想要的。如果我有全年的数据,也可以按月分组。条件相同,即7到7。@bogojane:只需对Month执行与分组中的另一个属性相同的操作:Month=row.FielddateandTime.AddHours-7.MonthGot!!谢谢你的帮助。我说我的一天从7点开始,到第二天7点结束。上面的查询给出了12到12的数据。@bogojane:啊,我错过了那一点。虽然很容易修复-编辑。谢谢@Jon Skeet,这正是我想要的。如果我有全年的数据,也可以按月分组。条件相同,即7到7。@bogojane:只需对Month执行与分组中的另一个属性相同的操作:Month=row.FielddateandTime.AddHours-7.MonthGot!!谢谢你的帮助。