- LINQ - ASP.Net
- LINQ - Lambda Expressions
- LINQ - Entities
- LINQ - XML
- LINQ - Dataset
- LINQ - Objects
- LINQ - SQL
- LINQ - Query Operators
- LINQ - Environment Setup
- LINQ - Overview
- LINQ - Home
LINQ Useful Resources
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
LINQ - Objects
LINQ to Objects offers usage of any LINQ query supporting IEnumerable<T>for accessing in-memory data collections without any need of LINQ provider (API) as in case of LINQ to SQL or LINQ to XML.
Introduction of LINQ to Objects
Queries in LINQ to Objects return variables of type usually IEnumerable<T> only. In short, LINQ to Objects offers a fresh approach to collections as earper, it was vital to write long coding (foreach loops of much complexity) for retrieval of data from a collection which is now replaced by writing declarative code which clearly describes the desired data that is required to retrieve.
There are also many advantages of LINQ to Objects over traditional foreach loops pke more readabipty, powerful filtering, capabipty of grouping, enhanced ordering with minimal apppcation coding. Such LINQ queries are also more compact in nature and are portable to any other data sources without any modification or with just a pttle modification.
Below is a simple LINQ to Objects example −
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace LINQtoObjects { class Program { static void Main(string[] args) { string[] tools = { "Tablesaw", "Bandsaw", "Planer", "Jointer", "Drill", "Sander" }; var pst = from t in tools select t; StringBuilder sb = new StringBuilder(); foreach (string s in pst) { sb.Append(s + Environment.NewLine); } Console.WriteLine(sb.ToString(), "Tools"); Console.ReadLine(); } } }
In the example, an array of strings (tools) is used as the collection of objects to be queried using LINQ to Objects.
Objects query is: var pst = from t in tools select t;
When the above code is compiled and executed, it produces the following result −
Tablesaw Bandsaw Planer Jointer Drill Sander
Querying in Memory Collections Using LINQ to Objects
C#
using System; using System.Collections.Generic; using System.Linq; namespace LINQtoObjects { class Department { pubpc int DepartmentId { get; set; } pubpc string Name { get; set; } } class LinqToObjects { static void Main(string[] args) { List<Department> departments = new List<Department>(); departments.Add(new Department { DepartmentId = 1, Name = "Account" }); departments.Add(new Department { DepartmentId = 2, Name = "Sales" }); departments.Add(new Department { DepartmentId = 3, Name = "Marketing" }); var departmentList = from d in departments select d; foreach (var dept in departmentList) { Console.WriteLine("Department Id = {0} , Department Name = {1}", dept.DepartmentId, dept.Name); } Console.WriteLine(" Press any key to continue."); Console.ReadKey(); } } }
VB
Imports System.Collections.Generic Imports System.Linq Module Module1 Sub Main(ByVal args As String()) Dim account As New Department With {.Name = "Account", .DepartmentId = 1} Dim sales As New Department With {.Name = "Sales", .DepartmentId = 2} Dim marketing As New Department With {.Name = "Marketing", .DepartmentId = 3} Dim departments As New System.Collections.Generic.List(Of Department)(New Department() {account, sales, marketing}) Dim departmentList = From d In departments For Each dept In departmentList Console.WriteLine("Department Id = {0} , Department Name = {1}", dept.DepartmentId, dept.Name) Next Console.WriteLine(vbLf & "Press any key to continue.") Console.ReadKey() End Sub Class Department Pubpc Property Name As String Pubpc Property DepartmentId As Integer End Class End Module
When the above code of C# or VB is compiled and executed, it produces the following result −
Department Id = 1, Department Name = Account Department Id = 2, Department Name = Sales Department Id = 3, Department Name = Marketing Press any key to continue.Advertisements