Introduction

Language Integrated Query (LINQ) is a powerful feature in C# that allows you to query and manipulate data in a more readable and concise manner. This post will introduce you to the basics of LINQ, demonstrate its usage with practical examples, and highlight how it can streamline your data operations.

Understanding LINQ in C#

LINQ integrates query capabilities directly into the C# language, allowing you to write SQL-like queries over collections of data directly within your code. LINQ can be used with various data sources, including arrays, lists, XML, databases, and more.

Basic LINQ Query Syntax

A LINQ query consists of three main parts: data source, query creation, and query execution.

Example:

using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
    public static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

        // LINQ query to find even numbers
        var evenNumbers = from num in numbers
                          where num % 2 == 0
                          select num;

        Console.WriteLine("Even numbers:");
        foreach (var num in evenNumbers)
        {
            Console.WriteLine(num);
        }
    }
}

Explanation:

  • Data Source: The numbers list is the data source.
  • Query Creation: The LINQ query (from num in numbers where num % 2 == 0 select num) creates a query to find even numbers.
  • Query Execution: The foreach loop executes the query and prints the even numbers.

Output:

Even numbers:
2
4
6
8
10

LINQ Methods for Data Manipulation

LINQ provides a variety of methods for filtering, sorting, grouping, and aggregating data.

Filtering Data Example:

using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
    public static void Main()
    {
        List<string> fruits = new List<string> { "Apple", "Banana", "Mango", "Orange", "Papaya" };

        // LINQ method syntax to filter fruits that contain the letter 'a'
        var filteredFruits = fruits.Where(fruit => fruit.Contains('a'));

        Console.WriteLine("Fruits containing 'a':");
        foreach (var fruit in filteredFruits)
        {
            Console.WriteLine(fruit);
        }
    }
}

Explanation:

  • Data Source: The fruits list is the data source.
  • Query Creation and Execution: The LINQ Where method filters fruits that contain the letter ‘a’.

Output:

Fruits containing 'a':
Banana
Mango
Papaya

Sorting Data Example:

using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
    public static void Main()
    {
        List<string> fruits = new List<string> { "Apple", "Banana", "Mango", "Orange", "Papaya" };

        // LINQ method syntax to sort fruits alphabetically
        var sortedFruits = fruits.OrderBy(fruit => fruit);

        Console.WriteLine("Sorted fruits:");
        foreach (var fruit in sortedFruits)
        {
            Console.WriteLine(fruit);
        }
    }
}

Explanation:

  • Data Source: The fruits list is the data source.
  • Query Creation and Execution: The LINQ OrderBy method sorts the fruits alphabetically.

Output:

Sorted fruits:
Apple
Banana
Mango
Orange
Papaya

Grouping Data Example:

using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
    public static void Main()
    {
        List<string> words = new List<string> { "apple", "banana", "cherry", "apricot", "blueberry", "avocado" };

        // LINQ query syntax to group words by their first letter
        var groupedWords = from word in words
                           group word by word[0] into wordGroup
                           select wordGroup;

        Console.WriteLine("Grouped words by their first letter:");
        foreach (var group in groupedWords)
        {
            Console.WriteLine($"Words starting with '{group.Key}':");
            foreach (var word in group)
            {
                Console.WriteLine(word);
            }
        }
    }
}

Explanation:

  • Data Source: The words list is the data source.
  • Query Creation: The LINQ query groups words by their first letter.
  • Query Execution: The foreach loop iterates through the groups and prints the grouped words.

Output:

Grouped words by their first letter:
Words starting with 'a':
apple
apricot
avocado
Words starting with 'b':
banana
blueberry
Words starting with 'c':
cherry

Aggregating Data Example:

using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
    public static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

        // LINQ method syntax to calculate the sum of all numbers
        int sum = numbers.Sum();

        Console.WriteLine("Sum of all numbers: " + sum);
    }
}

Explanation:

  • Data Source: The numbers list is the data source.
  • Query Creation and Execution: The LINQ Sum method calculates the sum of all numbers in the list.

Output:

Sum of all numbers: 55

Conclusion

LINQ is a powerful tool for querying and manipulating data in C#. It makes your code more readable and maintainable. By mastering LINQ, you can handle data operations with greater efficiency and clarity.

Similar Posts