Testing Anonymous Type Equality in LINQ
What is Anonymous Type Equality?
If two or more anonymous types have same order, number and member declaratory type and name then the same anonymous type is defined. So, its permissible to use the referential equality operator on these types.
Now let’s see the other face of the coin, means of any of order, number and member declaratory type and name is different then different anonymous type is defined for each. Then it throws compiler error while testing referential integrity.
Note
Here you can use reflection to get the type information of anonymous types.
Use the Equals method (defined by all objects) to test equality of members.
Lets go through following lines:
var paternalMember = new {Father = "R k Arora", City = "Nangal Dam"};
var maternalMember = new {Mother = "Santosh Arora", City = "New Delhi"};
var fatherHome = new {Father = "R k Arora", City = "Nangal Dam"};
var motherHome = new {City = "New Delhi", Mother = "Santosh Arora"};
//Compare member equality:
paternalMember.Equals(fatherHome); //returns true
paternalMember.Equals(fatherHome); //error
If you want to know more about Anonymous Type-LINQ please refer to Anonymous Types in LINQ.