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# است که کار با دادهها را سادهتر، خواناتر و حرفهایتر میکند.