Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources

LINQ Queries Tutorial in C#

Introduction to LINQ

Language Integrated Query (LINQ) is a powerful feature in C# that allows developers to write queries directly in the programming language. It provides a consistent way to query data from different sources such as arrays, collections, databases, XML documents, and more. LINQ makes the code more readable and maintainable.

Basic LINQ Query Syntax

A simple LINQ query consists of three parts:

  • Data source: The collection or array to query.
  • Query creation: The actual query written using LINQ syntax.
  • Query execution: The execution of the query to fetch the results.

Example: Querying an array of integers to find even numbers.

int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

// Query creation
var evenNumbers = from num in numbers
                  where num % 2 == 0
                  select num;

// Query execution
foreach (var num in evenNumbers)
{
    Console.WriteLine(num);
}
                    
Output:
2
4
6
8
10
                    

Filtering Data

LINQ provides the where clause to filter data based on a condition. The following example demonstrates how to filter numbers greater than 5.

int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

var filteredNumbers = from num in numbers
                      where num > 5
                      select num;

foreach (var num in filteredNumbers)
{
    Console.WriteLine(num);
}
                    
Output:
6
7
8
9
10
                    

Ordering Data

LINQ allows ordering data using the orderby clause. You can sort data in ascending or descending order. Here's an example:

string[] names = { "John", "Jane", "Tom", "Anna", "Emily" };

var sortedNames = from name in names
                  orderby name
                  select name;

foreach (var name in sortedNames)
{
    Console.WriteLine(name);
}
                    
Output:
Anna
Emily
Jane
John
Tom
                    

Joining Data

LINQ supports joining data from two different data sources. The join clause is used to perform inner joins. Here's an example:

var students = new[]
{
    new { StudentId = 1, Name = "John" },
    new { StudentId = 2, Name = "Jane" },
    new { StudentId = 3, Name = "Tom" }
};

var scores = new[]
{
    new { StudentId = 1, Score = 90 },
    new { StudentId = 2, Score = 85 },
    new { StudentId = 3, Score = 88 }
};

var studentScores = from student in students
                    join score in scores on student.StudentId equals score.StudentId
                    select new { student.Name, score.Score };

foreach (var studentScore in studentScores)
{
    Console.WriteLine($"Name: {studentScore.Name}, Score: {studentScore.Score}");
}
                    
Output:
Name: John, Score: 90
Name: Jane, Score: 85
Name: Tom, Score: 88
                    

Grouping Data

LINQ allows grouping data using the group clause. This is useful for aggregating data. Here's an example:

var students = new[]
{
    new { Name = "John", Age = 18 },
    new { Name = "Jane", Age = 20 },
    new { Name = "Tom", Age = 18 },
    new { Name = "Anna", Age = 20 }
};

var groupedStudents = from student in students
                      group student by student.Age into ageGroup
                      select ageGroup;

foreach (var group in groupedStudents)
{
    Console.WriteLine($"Age Group: {group.Key}");
    foreach (var student in group)
    {
        Console.WriteLine($"  Name: {student.Name}");
    }
}
                    
Output:
Age Group: 18
  Name: John
  Name: Tom
Age Group: 20
  Name: Jane
  Name: Anna
                    

LINQ with Lambda Expressions

LINQ queries can also be written using lambda expressions, which are more concise and often preferred by developers. Here's an example:

int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

var evenNumbers = numbers.Where(num => num % 2 == 0);

foreach (var num in evenNumbers)
{
    Console.WriteLine(num);
}
                    
Output:
2
4
6
8
10
                    

Conclusion

LINQ is a powerful tool in C# that simplifies data querying and manipulation. Its consistency and readability make it an essential feature for any C# developer. By mastering LINQ, you can write more efficient and maintainable code.