Understanding C# Anonymous Types | Syncfusion Blogs
Live Chat Icon For mobile
Live Chat Icon
Popular Categories.NET  (182).NET Core  (28).NET MAUI  (231)Angular  (117)ASP.NET  (49)ASP.NET Core  (81)ASP.NET MVC  (87)Azure  (42)Black Friday Deal  (1)Blazor  (242)BoldSign  (14)DocIO  (24)Essential JS 2  (110)Essential Studio  (201)File Formats  (74)Flutter  (138)JavaScript  (227)Microsoft  (122)PDF  (84)Python  (1)React  (107)Streamlit  (1)Succinctly series  (131)Syncfusion  (985)TypeScript  (33)Uno Platform  (3)UWP  (3)Vue  (46)Webinar  (53)Windows Forms  (59)WinUI  (72)WPF  (164)Xamarin  (159)XlsIO  (38)Other CategoriesBarcode  (5)BI  (29)Bold BI  (8)Bold Reports  (2)Build conference  (11)Business intelligence  (55)Button  (4)C#  (164)Chart  (152)Chart of the week  (61)Cloud  (16)Company  (440)Dashboard  (8)Data Science  (3)Data Validation  (8)DataGrid  (74)Development  (692)Doc  (7)DockingManager  (1)eBook  (99)Enterprise  (22)Entity Framework  (7)Essential Tools  (13)Excel  (43)Extensions  (31)File Manager  (8)Gantt  (22)Gauge  (12)Git  (5)Grid  (31)HTML  (13)Installer  (2)Knockout  (2)Language  (1)LINQPad  (1)Linux  (2)M-Commerce  (1)Metro Studio  (11)Mobile  (526)Mobile MVC  (9)OLAP server  (2)Open source  (1)Orubase  (12)Partners  (21)PDF viewer  (46)Performance  (13)PHP  (2)PivotGrid  (5)Predictive Analytics  (6)Report Server  (3)Reporting  (8)Reporting / Back Office  (9)Rich Text Editor  (12)Road Map  (12)Scheduler  (54)Security  (5)SfDataGrid  (9)Silverlight  (21)Sneak Peek  (32)Solution Services  (4)Spreadsheet  (11)SQL  (15)Stock Chart  (1)Surface  (4)Tablets  (5)Theme  (12)Tips and Tricks  (112)UI  (420)Uncategorized  (68)Unix  (2)User interface  (68)Visual State Manager  (2)Visual Studio  (31)Visual Studio Code  (19)Web  (643)What's new  (353)Windows 8  (19)Windows App  (2)Windows Phone  (15)Windows Phone 7  (9)WinRT  (26)
Understanding C# Anonymous Types

Understanding C# Anonymous Types

The anonymous types in the C# programming language provide an easy way to encapsulate different properties in a single object. Unlike properties in a class, the properties of the anonymous type objects are read-only. We can create read-only properties in a class, but not all properties are mandatorily read-only.

For better understanding, you can call an anonymous type a class with only public read-only objects. It is not allowed to hold methods, events, and other elements of a class.

In this blog, we will cover the following topics:

Declaring and using an anonymous type object

The keyword var is used to declare anonymous type objects. The new operator, along with an object initializer, is used to define the value.

The following code example illustrates the declaration and initialization of the anonymous type with two properties, Username and Password.

var loginCredentials = new { Username = "suresh", Password = "********" };

Console.WriteLine("Username " + loginCredentials.Username.ToString());
Console.WriteLine("Password " + loginCredentials.Password.ToString());

After assigning values to the UserName and Password properties, they cannot be altered, as they are read-only. Trying to modify the values will result in an error.
Code showing an error message while altering the username and password

Anonymous objects in a LINQ query

Usually, an anonymous data type is used in the select clause of a LINQ expression to return a subset of properties from each object in the collection.

In the following code example, we will see using an anonymous object in a LINQ query.

class Program
    static void Main(string[] args)
        IList<Employee> employees = new List<Employee>() {
        new Employee() { ID = 101, Name = "Peter", Age = 27 },
        new Employee() { ID = 102, Name = "Parker",  Age = 35 },
        new Employee() { ID = 103, Name = "Robert",  Age = 32 },

        var employeeDetails = from emp in employees
                              select new { Id = emp.ID, Name = emp.Name, Age = emp.Age };

        foreach (var employeeDetail in employeeDetails)
            Console.WriteLine(employeeDetail.Id + "-" + employeeDetail.Name + "-" + employeeDetail.Age);

public class Employee
    public int ID { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }

The output of the execution of this code example will be the following.

Passing an anonymous object as method parameter

Usually, it is not recommended to pass or return an anonymous object as a method parameter or return object. Handling it as an object is quite tedious, and in these cases, it’s preferred to use class or struct types.

Using an anonymous type as the method parameter is explained here just for your knowledge.

When an anonymous type object is passed as a parameter, it is received as the object type. The received object cannot be used as such. We have to access the type of the object and acquire the PropertyInfo from the type to access the property’s values.

The following code example illustrates accessing the property values of the anonymous object.

static void Main(string[] args)
    var loginCredentials = new { UserName = "suresh", Password = "********" };

static void PrintValues(object credentials)
    Type type = credentials.GetType();
    PropertyInfo[] info = type.GetProperties();

    foreach (var item in info)
        var value = item.GetValue(credentials);

The execution of this code will result in the following.

Result Conclusion

I hope you now have a clear idea of anonymous types in C# programs. Use this type wisely in your program wherever applicable.

Syncfusion provides more than 1,600 custom controls to ease the work of developers on various platforms. Please have a look and use them in your application development:


Share this post:

Popular Now

Be the first to get updates

Subscribe RSS feed

Be the first to get updates

Subscribe RSS feed