@Allemahesh, glad that it has helped you. I have answered based on question you asked for.
However, here is an updated solution for your problem.
var flag = persons1.Where(x1 => !persons2.Any(x2 => x1.Id == x2.Id
&& x1.Name == x2.Name ))
.Union( persons2.Where(x1 => !persons1.Any(x2 => x1.Id == x2.Id
&& x1.Name == x2.Name )))
.Count() == 0 ? true : false;
if (flag) Console.WriteLine("Names are equal");
else Console.WriteLine("Names are not equal");
Case 1: ID and Names are same
Input
List<Person> persons1 = new List<Person>
{
new Person {Id = 1, Name = "Person 1"},
new Person {Id = 2, Name = "Person 2"},
new Person {Id = 3, Name = "Person 3"},
new Person {Id = 4, Name = "Person 4"}
};
List<Person> persons2 = new List<Person>
{
new Person {Id = 1, Name = "Person 1"},
new Person {Id = 2, Name = "Person 2"},
new Person {Id = 3, Name = "Person 3"},
new Person {Id = 4, Name = "Person 4"},
};
Output
Names are equal
Case 2: ID same but Name different
Input
List<Person> persons1 = new List<Person>
{
new Person {Id = 1, Name = "Person 1"},
new Person {Id = 2, Name = "Person 2"},
new Person {Id = 3, Name = "Person 3"},
new Person {Id = 4, Name = "Person 45"}
};
List<Person> persons2 = new List<Person>
{
new Person {Id = 1, Name = "Person 1"},
new Person {Id = 2, Name = "Person 2"},
new Person {Id = 3, Name = "Person 3"},
new Person {Id = 4, Name = "Person 4"},
};
Result
Names are not equal
Case 3: ID different but Names are same
Input
List<Person> persons1 = new List<Person>
{
new Person {Id = 1, Name = "Person 1"},
new Person {Id = 2, Name = "Person 2"},
new Person {Id = 3, Name = "Person 3"},
new Person {Id = 4, Name = "Person 4"}
};
List<Person> persons2 = new List<Person>
{
new Person {Id = 1, Name = "Person 1"},
new Person {Id = 2, Name = "Person 2"},
new Person {Id = 3, Name = "Person 3"},
new Person {Id = 44, Name = "Person 4"},
};
Result
Names are not equal
Hope this helps
--
Thanks & Regards,
RNA Team
Allemahesh, if this helps please login to Mark As Answer. | Alert Moderator