如何在Linq中按周分组数据
我的数据从2011年2月1日开始,每天都会更新 我想使用从日期如何在Linq中按周分组数据,linq,c#-4.0,Linq,C# 4.0,我的数据从2011年2月1日开始,每天都会更新 我想使用从日期01/02/2011开始的一周格式化数据 我有实体 public DateTime? MeasurementDate { get; set; } 日期格式:2011-02-01 00:00:00.0000000 这给了我数据库中的日期 我想按周对linq中的数据进行分组 你能帮我吗?使用日历类的GetWeekOfYear方法 var dt = new List<DateTime?> { /*...*/ }; var df
01/02/2011
开始的一周格式化数据
我有实体
public DateTime? MeasurementDate { get; set; }
日期格式:2011-02-01 00:00:00.0000000
这给了我数据库中的日期
我想按周对linq中的数据进行分组
你能帮我吗?使用
日历
类的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));
var dt=新列表{/*…*/};
var dfi=DateTimeFormatInfo.CurrentInfo;
var=dt
.其中(x=>x.HasValue)
.OrderBy(x=>dfi.Calendar.GetWeekOfYear(x.Value,CalendarWeekRule.FirstDay,DayOfWeek.Monday));
使用日历
类的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));
var dt=新列表{/*…*/};
var dfi=DateTimeFormatInfo.CurrentInfo;
var=dt
.其中(x=>x.HasValue)
.OrderBy(x=>dfi.Calendar.GetWeekOfYear(x.Value,CalendarWeekRule.FirstDay,DayOfWeek.Monday));
如果使用Linq To实体,可以执行以下操作:
source.GroupBy(x => SqlFunctions.DatePart("ww", x.MeasurementDate));
如果使用Linq To实体,可以执行以下操作:
source.GroupBy(x => SqlFunctions.DatePart("ww", x.MeasurementDate));
或者你可以得到一周中第一天的日期,然后按该日期分组 获取一周中第一天的日期。 您可以使用以下代码:
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;
}
}
或者您可以获取一周中第一天的日期,然后按该日期分组 获取一周中第一天的日期。 您可以使用以下代码:
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;
}
}
记住:
DateTime
没有格式。您尝试了什么?我使用代码为104的Dateadd插入了数据,因此它为时间部分插入了默认时间。请记住:DateTime
没有格式化。您尝试过什么?我使用Dateadd插入了数据,代码为104,因此它为时间部分插入了默认时间..简短而简洁。在.NET4.6和EntityFramework6中对其进行了测试,效果非常好,简洁明了。在.NET4.6和EntityFramework6中进行了测试,效果非常好。