【问题标题】:How to compare to list of date in C#? [duplicate]如何与 C# 中的日期列表进行比较? [复制]
【发布时间】:2015-10-23 00:11:08
【问题描述】:

我有两个日期列表。我必须比较两个列表并找到丢失的日期。 我的第一个列表如下所示:

2015-07-21
2015-07-22
2015-07-23
2015-07-24
2015-07-25
2015-07-26
2015-07-27

我的第二个列表是这样的

2015-07-21
2015-07-22
2015-07-23
2015-07-25
2015-07-26
2015-07-27

我必须在两个列表之间找到缺失的日期:

我试过了

var anyOfthem = firstList.Except(secondList);

但它没有用。谁能帮我解决这个问题?

【问题讨论】:

  • 你必须得到缺失的日期吗?
  • 是的,我必须得到缺少@LzyPanda 的日期
  • .Except 将返回除secondList 之外的所有值。所以这和你想要的完全不同。
  • “没有工作”是什么意思?你得到了什么而不是想要的结果?
  • @HimBromBeere 查看我的评论 ;)

标签: c# list date datetime except


【解决方案1】:

嗯,你可以使用.Except().Union() 方法:

        string[] array1 = 
        {
        "2015-07-21",
        "2015-07-22",
        "2015-07-23",
        "2015-07-24",
        "2015-07-25",
        "2015-07-26",            
        };

        string[] array2 = 
        {
        "2015-07-21",
        "2015-07-22",
        "2015-07-23",            
        "2015-07-25",
        "2015-07-26",
        "2015-07-27"
        };

        var result = array1.Except(array2).Union(array2.Except(array1));

        foreach (var item in result) 
        {
           Console.WriteLine(item);
        }

输出:“2015-07-24”,“2015-07-27”,

【讨论】:

    【解决方案2】:
    string[] array1 = 
    {
        "2015-07-21",
        "2015-07-22",
        "2015-07-23",
        "2015-07-24",
        "2015-07-25",
        "2015-07-26",            
    };
    
    string[] array2 = 
    {
        "2015-07-21",
        "2015-07-22",
        "2015-07-23",            
        "2015-07-25",
        "2015-07-26",
        "2015-07-27"
    };
    
    var common = list1.Intersect(list2);
    var anyOfThem = list1.Except(common).Concat(list2.Except(common));
    
    foreach (var date in anyOfThem)
        Console.WriteLine(date);
    
    // 2015-07-24
    // 2015-07-27
    

    【讨论】:

      【解决方案3】:

      希望这正是您想要的:

      var notamatch= firstList.Where(x => !anyOfthem.Any(y => y.yourseconddatename== x.yourfirstdatename));
      

      【讨论】:

        【解决方案4】:

        您必须检查一个列表是否包含另一个列表中的值:

        var anyOfthem = firstList.Where(x => !secondList.Contains(x));
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多