LINQ در C#

LINQ (Language Integrated Query) ابزاری در C# است که به ما اجازه می‌دهد روی مجموعه‌های داده (Collections, Database, Arrays) کوئری‌های خوانا و قدرتمند بنویسیم.

LINQ چیست؟

LINQ یک روش استاندارد برای Query گرفتن از داده‌هاست که باعث خوانایی بیشتر و کد کمتر می‌شود.

Where (فیلتر کردن داده‌ها)


List numbers = new List { 1, 2, 3, 4, 5 };

var result = numbers.Where(x => x > 2);

foreach (var item in result)
{
    Console.WriteLine(item);
}

Select (انتخاب داده‌ها)


List names = new List { "Ali", "Sara", "Reza" };

var result = names.Select(x => x.ToUpper());

foreach (var item in result)
{
    Console.WriteLine(item);
}

OrderBy (مرتب‌سازی)


List numbers = new List { 5, 2, 9, 1 };

var result = numbers.OrderBy(x => x);

foreach (var item in result)
{
    Console.WriteLine(item);
}

OrderByDescending


var result = numbers.OrderByDescending(x => x);

First / FirstOrDefault


List numbers = new List { 1, 2, 3 };

int first = numbers.First();

int firstOrDefault = numbers.FirstOrDefault(x => x > 10);

Single / SingleOrDefault


List numbers = new List { 1 };

int value = numbers.Single();

Single زمانی استفاده می‌شود که دقیقاً انتظار یک مقدار داریم.

Any / All


List numbers = new List { 1, 2, 3, 4 };

bool hasEven = numbers.Any(x => x % 2 == 0);
bool allPositive = numbers.All(x => x > 0);

GroupBy


List names = new List { "Ali", "Amir", "Sara", "Sam" };

var result = names.GroupBy(x => x[0]);

foreach (var group in result)
{
    Console.WriteLine(group.Key);

    foreach (var item in group)
    {
        Console.WriteLine(item);
    }
}

Method Syntax vs Query Syntax

Method Syntax


var result = numbers.Where(x => x > 2).ToList();

Query Syntax


var result = from n in numbers
             where n > 2
             select n;

کاربرد در پروژه واقعی


var activeUsers = _context.Users
    .Where(x => x.IsActive)
    .OrderBy(x => x.Name)
    .ToList();

جمع‌بندی

LINQ یکی از قدرتمندترین ویژگی‌های C# است که کار با داده‌ها را ساده‌تر، خواناتر و حرفه‌ای‌تر می‌کند.