What is LINQ?
LINQ stands for:
In simple words:
👉 LINQ allows you to query data using C# code.
Instead of writing complex loops, we can write simple and clean queries.
Why LINQ Was Introduced?
Before LINQ:
LINQ makes:
Where Can We Use LINQ?
We can use LINQ with:
Example Without LINQ
List<int> numbers = new List<int> { 5, 10, 15, 20, 25 };
List<int> result = new List<int>();
foreach (int num in numbers)
{
if (num > 10)
{
result.Add(num);
}
}
👉 Many lines of code.
Same Example With LINQ
List<int> numbers = new List<int> { 5, 10, 15, 20, 25 };
var result = numbers.Where(n => n > 10);
foreach (var item in result)
{
Console.WriteLine(item);
}
Output:
15
20
25
Important LINQ Methods (With Simple Explanation)
1. Where() – Filtering Data
Used to filter data.
var result = numbers.Where(n => n > 15);
✔ Returns only numbers greater than 15.
2. Select() – Selecting Specific Data
Used to select specific properties.
Example:
List<string> names = new List<string> { "Abhay", "Rahul", "Amit" };
var result = names.Select(n => n.ToUpper());
Output:
ABHAY
RAHUL
AMIT
3. OrderBy() – Sorting Ascending
var result = numbers.OrderBy(n => n);
4. OrderByDescending() – Sorting Descending
var result = numbers.OrderByDescending(n => n);
5. First() and FirstOrDefault()
First()
Returns first element.
var result = numbers.First();
⚠If list empty → error.
FirstOrDefault()
var result = numbers.FirstOrDefault();
✔ If empty → returns default value (0 for int)
6. Count()
int total = numbers.Count();
7. Sum()
int totalSum = numbers.Sum();
8. Max() and Min()
int max = numbers.Max();
int min = numbers.Min();
LINQ Query Syntax vs Method Syntax
LINQ has two types:
Method Syntax (Commonly Used)
var result = numbers.Where(n => n > 10);
Query Syntax (SQL Like)
var result = from n in numbers
where n > 10
select n;
Both give same output.
But most developers use Method Syntax.
Real Example with Class
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public int Marks { get; set; }
}
Create List:
List<Student> students = new List<Student>
{
new Student { Id = 1, Name = "Abhay", Marks = 80 },
new Student { Id = 2, Name = "Rahul", Marks = 60 },
new Student { Id = 3, Name = "Amit", Marks = 90 }
};
Get Students with Marks > 70
var result = students.Where(s => s.Marks > 70);
foreach (var student in result)
{
Console.WriteLine(student.Name);
}
Output:
Abhay
Amit
Deferred Execution (Important Concept)
LINQ does not execute immediately.
It executes when:
You use foreach
You use ToList()
You use ToArray()
Example:
var result = numbers.Where(n => n > 10);
var finalList = result.ToList();
Now query runs.
Advantages of LINQ
Common Mistakes Beginners Do
Forgetting ToList() when needed
Using First() on empty list
Not understanding deferred execution
Writing complex queries in one line
Conclusion
In this article, we learned: