You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并两个DateTime数组并统计各日期在原数组中的出现次数?

合并日期数组并统计各数组中的出现次数

你需要将两个DateTime数组合并为包含所有唯一日期的结构,同时统计每个日期在原数组中的出现次数,以下是具体实现方案:

示例输入

var today = new DateTime(year:2022, month:01, day:01);
var firstDateArray = new DateTime[] { today.AddDays(1), today.AddDays(7), today, today.AddDays(3), today };
var secondDateArray = new DateTime[] { today.AddDays(7), today, today.AddDays(3), today.AddDays(3), today.AddDays(1) };

实现步骤

  1. 分别统计两个数组的日期频次
    使用LINQ的GroupBy对每个数组按日期分组,再转换为字典存储日期和对应出现次数:

    // 若只需统计日期部分(忽略时间),使用d.Date;若需保留完整DateTime,直接用d
    var firstDateCounts = firstDateArray
        .GroupBy(d => d.Date)
        .ToDictionary(group => group.Key, group => group.Count());
    
    var secondDateCounts = secondDateArray
        .GroupBy(d => d.Date)
        .ToDictionary(group => group.Key, group => group.Count());
    
  2. 获取所有唯一日期
    通过字典键的Union操作,得到两个数组中所有不重复的日期:

    var allUniqueDates = firstDateCounts.Keys.Union(secondDateCounts.Keys);
    
  3. 定义结果结构并生成最终列表
    先定义一个类来存储每个日期的统计结果,再遍历所有唯一日期,从两个字典中获取对应次数(不存在则为0):

    // 结果实体类
    public class DateCount
    {
        public DateTime Date { get; set; }
        public int FirstArrayOccurrences { get; set; }
        public int SecondArrayOccurrences { get; set; }
    }
    
    // 生成结果列表
    var finalResult = allUniqueDates.Select(date => new DateCount
    {
        Date = date,
        FirstArrayOccurrences = firstDateCounts.TryGetValue(date, out int count1) ? count1 : 0,
        SecondArrayOccurrences = secondDateCounts.TryGetValue(date, out int count2) ? count2 : 0
    }).ToList();
    

示例输出

对应你给出的输入,最终结果如下:

日期第一个数组出现次数第二个数组出现次数
2022-01-0121
2022-01-0211
2022-01-0412
2022-01-0811

内容的提问来源于stack exchange,提问作者Isaac Ikusika

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 21:45:35