首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用linq按周和工作日对日期进行分组?

LINQ(Language Integrated Query)是一种在.NET平台上进行数据查询和操作的技术。它提供了一种统一的查询语法,可以对各种数据源进行查询,包括集合、数据库、XML等。

要按周和工作日对日期进行分组,可以使用LINQ的GroupBy方法结合自定义的分组键来实现。首先,需要定义一个函数来确定日期所属的周和工作日。以下是一个示例代码:

代码语言:txt
复制
public class DateGroup
{
    public int Week { get; set; }
    public string DayOfWeek { get; set; }
    public DateTime Date { get; set; }
}

public static void Main()
{
    // 假设有一个日期列表
    List<DateTime> dates = new List<DateTime>
    {
        new DateTime(2022, 1, 1),
        new DateTime(2022, 1, 2),
        new DateTime(2022, 1, 3),
        new DateTime(2022, 1, 4),
        new DateTime(2022, 1, 5),
        new DateTime(2022, 1, 6),
        new DateTime(2022, 1, 7),
        new DateTime(2022, 1, 8),
        new DateTime(2022, 1, 9),
        new DateTime(2022, 1, 10),
        new DateTime(2022, 1, 11),
        new DateTime(2022, 1, 12),
        new DateTime(2022, 1, 13),
        new DateTime(2022, 1, 14),
        new DateTime(2022, 1, 15)
    };

    var groupedDates = dates.Select(date => new DateGroup
    {
        Week = CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(date, CalendarWeekRule.FirstDay, DayOfWeek.Monday),
        DayOfWeek = date.DayOfWeek.ToString(),
        Date = date
    })
    .GroupBy(d => new { d.Week, d.DayOfWeek })
    .OrderBy(g => g.Key.Week)
    .ThenBy(g => GetDayOfWeekOrder(g.Key.DayOfWeek));

    foreach (var group in groupedDates)
    {
        Console.WriteLine($"Week {group.Key.Week}, {group.Key.DayOfWeek}:");
        foreach (var date in group)
        {
            Console.WriteLine(date.Date.ToShortDateString());
        }
        Console.WriteLine();
    }
}

private static int GetDayOfWeekOrder(string dayOfWeek)
{
    switch (dayOfWeek)
    {
        case "Monday":
            return 1;
        case "Tuesday":
            return 2;
        case "Wednesday":
            return 3;
        case "Thursday":
            return 4;
        case "Friday":
            return 5;
        case "Saturday":
            return 6;
        case "Sunday":
            return 7;
        default:
            return 0;
    }
}

上述代码中,我们首先定义了一个DateGroup类,用于存储分组后的日期信息。然后,我们创建了一个日期列表dates,包含了一些日期数据。

接下来,我们使用LINQ的Select方法将日期列表转换为DateGroup对象,并在转换过程中计算出每个日期所属的周和工作日。然后,我们使用GroupBy方法按照周和工作日进行分组,并使用OrderBy方法对分组结果进行排序。

最后,我们通过遍历分组结果,将每个分组的周数、工作日和日期打印出来。

这样,我们就可以按周和工作日对日期进行分组了。

腾讯云相关产品和产品介绍链接地址:

请注意,以上仅为腾讯云的一些相关产品,其他云计算品牌商也提供类似的产品和服务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券