Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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
如何在Linq中按周分组数据_Linq_C# 4.0 - Fatal编程技术网

如何在Linq中按周分组数据

如何在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

我的数据从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 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中进行了测试,效果非常好。