LINQ (Language Integrated Query) হলো .NET এর একটি শক্তিশালী ফিচার, যা ডেটা সোর্সের উপর কুয়েরি চালানোর জন্য ব্যবহার করা হয়। LINQ ব্যবহার করে SQL ডেটাবেস, XML ডকুমেন্ট, কালেকশন (Lists, Arrays), এবং আরও বিভিন্ন ধরনের ডেটা কুয়েরি করা যায়। এটি ডেভেলপারদের জন্য সহজ এবং রিডেবল কুয়েরি লেখার সুযোগ দেয়, যা টাইপ-সেফ এবং কম্পাইল টাইমে যাচাইযোগ্য।
LINQ সাধারণত দুইভাবে লেখা যায়:
.Where()
, .Select()
, .OrderBy()
) ব্যবহার করে কুয়েরি লেখা।List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var evenNumbers = from number in numbers
where number % 2 == 0
select number;
foreach (var num in evenNumbers)
{
Console.WriteLine(num);
}
var evenNumbers = numbers.Where(number => number % 2 == 0);
foreach (var num in evenNumbers)
{
Console.WriteLine(num);
}
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
List<Product> products = new List<Product>
{
new Product { Id = 1, Name = "Laptop", Price = 800 },
new Product { Id = 2, Name = "Mouse", Price = 20 },
new Product { Id = 3, Name = "Keyboard", Price = 30 },
new Product { Id = 4, Name = "Monitor", Price = 150 }
};
var expensiveProducts = from product in products
where product.Price > 100
select product;
foreach (var product in expensiveProducts)
{
Console.WriteLine($"{product.Name}: ${product.Price}");
}
var expensiveProducts = products.Where(p => p.Price > 100);
foreach (var product in expensiveProducts)
{
Console.WriteLine($"{product.Name}: ${product.Price}");
}
Where()
ব্যবহার করা হয়।var filteredProducts = products.Where(p => p.Price > 50);
OrderBy()
এবং OrderByDescending()
ব্যবহার করা হয়।var sortedProducts = products.OrderBy(p => p.Price); // Ascending
var sortedProductsDesc = products.OrderByDescending(p => p.Price); // Descending
Select()
ব্যবহার করা হয়।var productNames = products.Select(p => p.Name);
foreach (var name in productNames)
{
Console.WriteLine(name);
}
Sum()
, Average()
, Count()
ব্যবহার করা হয়।var totalPrice = products.Sum(p => p.Price); // Total Price
var averagePrice = products.Average(p => p.Price); // Average Price
var productCount = products.Count(); // Total Count
GroupBy()
ব্যবহার করা হয়।var groupedProducts = products.GroupBy(p => p.Price > 100 ? "Expensive" : "Affordable");
foreach (var group in groupedProducts)
{
Console.WriteLine($"{group.Key} Products:");
foreach (var product in group)
{
Console.WriteLine($" - {product.Name}");
}
}
Join()
ব্যবহার করা হয়।List<Category> categories = new List<Category>
{
new Category { Id = 1, Name = "Electronics" },
new Category { Id = 2, Name = "Accessories" }
};
var productCategories = products.Join(categories,
product => product.Id,
category => category.Id,
(product, category) => new
{
ProductName = product.Name,
CategoryName = category.Name
});
foreach (var item in productCategories)
{
Console.WriteLine($"{item.ProductName} belongs to {item.CategoryName} category.");
}
LINQ শুধুমাত্র ইন-মেমোরি ডেটা কুয়েরি করার জন্য নয়, এটি Entity Framework Core এর সঙ্গে ডেটাবেস কুয়েরির জন্যও ব্যবহৃত হয়।
var expensiveProducts = context.Products
.Where(p => p.Price > 100)
.OrderBy(p => p.Name)
.ToList();
foreach (var product in expensiveProducts)
{
Console.WriteLine($"{product.Name}: ${product.Price}");
}
LINQ ডেটা কুয়েরি করার একটি শক্তিশালী এবং কার্যকর পদ্ধতি, যা ডেভেলপারদের প্রোডাক্টিভিটি বাড়াতে সহায়তা করে। এটি ইন-মেমোরি ডেটা এবং ডেটাবেস উভয়ের সঙ্গেই কাজ করতে পারে।
common.read_more