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

标签 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)
        */

最佳答案

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

也很有用:

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

关于c# - 我如何从通用日期列表中选择不同的(按唯一的月份/年份)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8730045/

相关文章:

c# - 如何使用 linq 延迟执行为每个项目执行自定义函数?

c# - System.Security.Claims.ClaimType 角色不匹配

c# - 传递 bool 表达式作为方法参数

asp.net - 使用匿名类型更新 LINQ 结果时出现问题...只读?

C# 值类型列表

c# - System.Linq.Enumerable.Max 的 Mono 之间的模糊调用

c# - 将 90000 个 XElement 添加到 XDocument

c# - 没有内置的 C# GUI 布局吗?

C# 方法 where 约束 T :V

c# - 没有通用接口(interface)和扫描组件的注册适配器