每月按日期时段对列表进行分组

时间:2021-05-30 00:02:14

标签: c# list grouping

所以我想对包含具有自己的日期戳的对象的列表进行分组。

f.前任。 如何获取包含 1 月 26 日和 2 月 25 日之间日期的列表中的所有对象

我需要按这些时期对整年进行分组。我正在处理的是按月分组并尝试挑选溢出的日期

var dictionary = new Dictionary<string, list<object>>() 
dictionary.add("jan", dataResult.List.Where(x => x.date.value.month == 1))
dictionary.add("feb", dataResult.List.Where(x => x.date.value.month == 2))
...

but i want something like this : 
dictionary.add("26jan-25feb", dataResult.List.Where(..))
dictionary.add("26feb-25mar", dataResult.List.Where(..))

我希望有人熟悉两个日期功能之间的某个范围。但任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:-1)

您可以使用如下所示的 DateTime 比较。 一个粗略的例子,

public class NameAndDate
{
    public DateTime ThresholdDate { get; set; }
    public string Name { get; set; }
}

// Populate the list with some random test data
nameAndDates.Add(new NameAndDate() { Name = "Test1", ThresholdDate = new DateTime(2021, 7, 3) });
nameAndDates.Add(new NameAndDate() { Name = "Test2", ThresholdDate = new DateTime(2021, 1, 13) });
nameAndDates.Add(new NameAndDate() { Name = "Test3", ThresholdDate = new DateTime(2021, 7, 18) });
nameAndDates.Add(new NameAndDate() { Name = "Test4", ThresholdDate = new DateTime(2021, 1, 11) });
nameAndDates.Add(new NameAndDate() { Name = "Test5", ThresholdDate = new DateTime(2021, 2, 9) });
nameAndDates.Add(new NameAndDate() { Name = "Test6", ThresholdDate = new DateTime(2021, 5, 5) });
nameAndDates.Add(new NameAndDate() { Name = "Test7", ThresholdDate = new DateTime(2021, 3, 29) });
nameAndDates.Add(new NameAndDate() { Name = "Test8", ThresholdDate = new DateTime(2021, 3, 19) });
nameAndDates.Add(new NameAndDate() { Name = "Test9", ThresholdDate = new DateTime(2021, 7, 4) });
nameAndDates.Add(new NameAndDate() { Name = "Test10", ThresholdDate = new DateTime(2021, 1, 22) });

// Populate the dictionary
var dictionary = new Dictionary<string, List<NameAndDate>>();
dictionary.Add("26jan-25feb", nameAndDates.Where(x => x.ThresholdDate.Date >= DateTime.Parse("2021-01-26")
                                                      && x.ThresholdDate.Date <= DateTime.Parse("2021-02-25")).ToList());

dictionary.Add("26feb-25mar", nameAndDates.Where(x => x.ThresholdDate.Date >= DateTime.Parse("2021-02-26")
                                                      && x.ThresholdDate.Date <= DateTime.Parse("2021-03-25")).ToList());