c# 4.0 - 如何在 Linq 中按周对数据进行分组

  • 本文关键字:数据 Linq linq c#-4.0
  • 更新时间 :
  • 英文 :


我有从日期01/02/2011开始的数据,每天都会更新。

我想使用从日期01/02/2011开始的周格式化数据。

我有实体

public DateTime? MeasurementDate { get; set; }

日期格式:

2011-02-01 00:00:00.0000000

这给了我来自数据库的日期..

我想在 linq BY 周中对数据进行分组?

你可以帮我吗?

如果使用 Linq-To-Entities,则可以执行以下操作:

source.GroupBy(x => SqlFunctions.DatePart("ww", x.MeasurementDate));

使用 Calendar 类的 GetWeekOfYear 方法

var dt = new List<DateTime?> { /*...*/ };
var dfi = DateTimeFormatInfo.CurrentInfo;
var ordered = dt
    .Where(x => x.HasValue)
    .OrderBy(x => dfi.Calendar.GetWeekOfYear(x.Value, CalendarWeekRule.FirstDay, DayOfWeek.Monday));
或者

,您可以获取一周中第一天的日期,然后按该日期分组。

获取一周中第一天的日期。您可以使用以下代码:

public static class DateTimeExtensions
{
    public static DateTime StartOfWeek(this DateTime dt, DayOfWeek startOfWeek)
    {
        int diff = dt.DayOfWeek - startOfWeek;
        if (diff < 0)
        {
            diff += 7;
        }
        return dt.AddDays(-1 * diff).Date;
    }
}

然后,您可以按一周的第一天分组,如下所示:

source.GroupBy(i => i.MeasurementDate.StartOfWeek(DayOfWeek.Monday));

参考

相关内容

  • 没有找到相关文章

最新更新