I'm writing a console app using c# .NET 4.7.2. I have 2 lists of objects that I am trying to see if they are equal. I am using SequenceEqual
to do this, but it is returning false when it should be returning true.
Here's my code:
List<Objects.PackageDetails> ExpectedResult1 = new List<Objects.PackageDetails>()
{
new Objects.PackageDetails{PackageName = "KittenService", PackageDependency = "CamelCaser"},
new Objects.PackageDetails{PackageName = "CamelCaser", PackageDependency = ""}
};
List<Objects.PackageDetails> ExpectedResult = new List<Objects.PackageDetails>()
{
new Objects.PackageDetails{PackageName = "KittenService", PackageDependency = "CamelCaser"},
new Objects.PackageDetails{PackageName = "CamelCaser", PackageDependency = ""}
};
var a = ExpectedResult1.SequenceEqual(ExpectedResult);
Console.WriteLine(">" + ExpectedResult1[0].PackageName + "<");
Console.WriteLine(">" + ExpectedResult[0].PackageName + "<");
Console.WriteLine(">" + ExpectedResult1[0].PackageDependency + "<");
Console.WriteLine(">" + ExpectedResult[0].PackageDependency + "<");
Console.WriteLine(">" + ExpectedResult1[1].PackageName + "<");
Console.WriteLine(">" + ExpectedResult[1].PackageName + "<");
Console.WriteLine(">" + ExpectedResult1[1].PackageDependency + "<");
Console.WriteLine(">" + ExpectedResult[1].PackageDependency + "<");
if (ExpectedResult1[0].PackageName == ExpectedResult[0].PackageName)
{
Console.WriteLine("equal");
}
else
{
Console.WriteLine("not equal");
}
if (ExpectedResult1[1].PackageName == ExpectedResult[1].PackageName)
{
Console.WriteLine("equal");
}
else
{
Console.WriteLine("not equal");
}
if (ExpectedResult1[0].PackageDependency == ExpectedResult[0].PackageDependency)
{
Console.WriteLine("equal");
}
else
{
Console.WriteLine("not equal");
}
if (ExpectedResult1[1].PackageDependency == ExpectedResult[1].PackageDependency)
{
Console.WriteLine("equal");
}
else
{
Console.WriteLine("not equal");
}
Console.Readline();
I am comparing the two lists to each other and when I hover over var a
it says that it is false. But all of the display statements show that visibly the values are the same and also the if statements that compare the individual values show that they are all equal as well.
Will someone please give me an idea as to why SequenceEqual
is saying the two lists are not equal but everything else I've done to determine if they are or not says they are equal? Thanks in advance.
EDIT: Here is my class declaration just in case it matters:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Objects
{
public class PackageDetails
{
public string PackageName { get; set; }
public string PackageDependency { get; set; }
}
}