如何从通用日期列表中选择不同的(按唯一月份/年份)?

Sha*_*ane 2 c# linq

因此,独特的是基于独特的月/年,而不仅仅是一个不同的月(所以我希望2011年1月和2012年1月是截然不同的)

 // Test set of data
        List<DateTime> CompleteListOfDates = new List<DateTime>();
        CompleteListOfDates.Add(new DateTime(2011, 1, 1));
        CompleteListOfDates.Add(new DateTime(2011, 1, 5));
        CompleteListOfDates.Add(new DateTime(2011, 3, 1));
        CompleteListOfDates.Add(new DateTime(2011, 5, 1));
        CompleteListOfDates.Add(new DateTime(2011, 5, 1));
        CompleteListOfDates.Add(new DateTime(2012, 1, 1));
        CompleteListOfDates.Add(new DateTime(2012, 2, 1));

        List<DateTime> UniqueMonthYears = new List<DateTime>();

        /* need distinct list of DateTimes that are distinct by Month and Year and should be in UniqueMonthYears
         For example:
        new DateTime(2011, 1, 1)
        new DateTime(2011, 3, 1)
        new DateTime(2011, 5, 1)
        new DateTime(2012, 1, 1)
        new DateTime(2012, 2, 1)
        */
Run Code Online (Sandbox Code Playgroud)

Amy*_*y B 7

List<DateTime> result = source
  .Select(d => new DateTime(d.Year, d.Month, 1))
  .Distinct()
  .ToList();
Run Code Online (Sandbox Code Playgroud)

也很有用:

ILookup<DateTime, Order> ordersByMonth = ordersSource
  .ToLookup(order => new DateTime(order.OrderDate.Year, order.OrderDate.Month, 1));
Run Code Online (Sandbox Code Playgroud)