Anonymous type is a feature in C# that was introduced with C# 3.0 which provides the developers the option to encapsulate the read only properties in to a object without explicitly defining the type. When using anonymous type in C# , there are times when you want to perform the equality check on the same. How is the equality check made on them ?
Anonymous Type and Equality Check in C#
If the anonymous types that are compared have the same number of members , same order and the same types , the equality operator returns true. When the anonymous type that have any one of the above (order , number of members and type) being different , the equality operator would produce a different hash value and would return false.
Below is a sample code snippet demonstrating the equality check of the anonymous type in C#.
using System; namespace DeveloperPublishApplication { class Program { static void Main(string[] args) { var Employee1 = new { Name ="Senthil Kumar", CompanyName = "Trivium eSolutions" }; var Employee2 = new { Name = "Senthil Kumar", CompanyName = "Trivium eSolutions" }; var Employee3 = new { CompanyName = "Trivium eSolutions", Name = "Senthil Kumar" }; var Employee4 = new { Name = "Norton Stanley", CompanyName = "Trivium eSolutions", }; Console.WriteLine(Employee1.Equals(Employee2)); // True - because everything is same Console.WriteLine(Employee1.Equals(Employee3)); // False - because the order of member is different Console.WriteLine(Employee1.Equals(Employee4)); // False - values are different Console.ReadLine(); } } }
2 Comments
“var” has **nothing** to do with anonymous types. Use var to infer the type based on the declaration. Inference applies whether it is anonymous, static, or dynamic (read: anything!).
You have correctly identified the equality comparisons for anonymous types, so maybe your article should stick to that?
Hi Tommy ,
Thanks for the comment . Appreciate it 🙂
Yes , I agree with you . The confusion was caused because I had put the var keyword in the bracket next to the anonymous type . Now , it is updated . Thank you .
Regards,
Senthil