如何比较 C# 中的日期列表?

How to compare to list of date in C#?

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

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);

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

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

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

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

希望这正是您要找的:

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

嗯,你可以使用 .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”、