Codechef4u is a community for computer professionals,by computer professionals,just like you; who loves sharing and helping each others,Join them
Share your post

Anonymous Types in C#

What is Anonymous Type in C#?

Anonymous types are easy way to encapsulate a set of read-only properties into a single object without having to explicitly define a type first.

In simple language anonymous type is a class without name containing only read-only public properties.

Note:

  • The type name is generated by the compiler and is not available at the source code level. The type of each property is inferred by the compiler.
  • If you do not specify member names in the anonymous type, the compiler gives the anonymous type members the same name as the property being used to initialize them.

How to create and use anonymous types in C#?

The following first example shows an anonymous type that is initialized with two properties named Id and Name.
Following 2nd example Anonymous type “ITDepartment” created with LINQ query select clause, first parameter is not named but used inferred anonymous type member(compiler gives name of department id) name and another parameter is named “depName”.

Example:

    public void ExmployeeData()
        {
            var Departments = GetAllDepartments();
 
            //1.  anonymous type “Employee” with properties named Id and Name.
            var Employee = new { Id="sk14",Name = "Shourya" };
 
            //2. anonymous type "ITDepartment" with LINQ query filter
            var ITDepartment = from dep in Departments
                               where dep.Name == "IT"
                               select new {dep.Id, DepName = dep.Name };
            //how to use it?
            Console.WriteLine("Employee Id :" + Employee.Id);
            Console.WriteLine("Employee Id :" + Employee.Name);
            Console.WriteLine("Employee Department Name :" + ITDepartment.FirstOrDefault().DepName); 
        }


Sample class and method to create in memory department collection.

   public class Department
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }


public List<Department> GetAllDepartments()
        {
            var departments = new List<Department>();
 
            var ITDepartment = new Department
            {
                Id = 1,
                Name = "IT"
            };
 
            var AccountDepartment = new Department
            {
                Id = 2,
                Name = "Account"
            };
            departments.Add(ITDepartment);
            departments.Add(AccountDepartment);
 
            return departments;

        } 



How to return anonymous type with Web API?

In follwing code example web method returns anonymous type "Employee"

[HttpGet]
[Route("GetEmployeeData")]
 public IHttpActionResult GetEmployeeData()
   {
       //anonymous type Employee with properties named Id and Name.
       var Employee = new { Id = "sk14", Name = "Shourya" };
       // Status Code 200;
        return this.Ok(Employee);
   }

 

How to return anonymous type with method?

      //Return anonymous Type as object
        public object GetAnonymousData()
        {
            return new { Id = "sk14", Name = "Shourya" };
        }


       //Display anonymous Type values from object
        public void DisplayAnonymousData()
        {
            object refobj = GetAnonymousData();
            Type type = refobj.GetType();
            PropertyInfo[] fields = type.GetProperties();
            foreach (var field in fields)
            {
                string name = field.Name;
                var firstValue = field.GetValue(refobj, null);
                Console.WriteLine("Employee Name " + firstValue);
            }
        }

Invalid entry,please enter valid data.

Loading