LINQ (Language Integrated Query) .NET প্ল্যাটফর্মে ডেটা ম্যানিপুলেশনের জন্য একটি শক্তিশালী টুল, যা ডেটাকে ফেচ এবং ম্যানিপুলেট করতে সহায়ক। LINQ এর মাধ্যমে আপনি শুধুমাত্র ডেটা অনুসন্ধানই করতে পারেন না, বরং সেই ডেটা পরিবর্তন, ফিল্টার, গ্রুপ, সাজানো (sorting), গ্রুপিং, অ্যাগ্রিগেট করা এবং অন্যান্য ম্যানিপুলেশন করতে পারেন। LINQ ব্যবহার করে Entity Framework বা অন্যান্য ডেটাবেস থেকেও ডেটা ম্যানিপুলেট করা যায়।
এখানে LINQ ব্যবহার করে ডেটা ফেচ এবং ম্যানিপুলেশন এর কিছু গুরুত্বপূর্ণ ধারণা এবং উদাহরণ দেওয়া হলো।
LINQ তে Query Syntax ব্যবহার করলে SQL স্টাইলে কোয়েরি লেখা যায়, যা অনেকটা SQL কোডের মতো। এই সিনট্যাক্সটি ডেটা ফেচ করার জন্য এবং সেটি ম্যানিপুলেট করার জন্য ব্যবহৃত হয়।
using (var context = new ApplicationDbContext())
{
// ডেটা ফেচ এবং ফিল্টার করা
var query = from person in context.People
where person.Age > 30
orderby person.Name ascending
select person;
foreach (var person in query)
{
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
}
এখানে, Query Syntax ব্যবহার করে context.People
টেবিল থেকে Age > 30 শর্তে ডেটা ফেচ করা হয়েছে এবং সাজানো হয়েছে Name অনুসারে।
LINQ তে Method Syntax ব্যবহার করলে Where()
, Select()
, OrderBy()
, GroupBy()
ইত্যাদি মেথড দিয়ে ডেটা ম্যানিপুলেট করা যায়। এটি Lambda Expressions ব্যবহার করে কোয়েরি তৈরির একটি পদ্ধতি।
using (var context = new ApplicationDbContext())
{
// Method Syntax ব্যবহার করে ডেটা ফেচ এবং ফিল্টার করা
var query = context.People
.Where(p => p.Age > 30)
.OrderBy(p => p.Name)
.ToList();
foreach (var person in query)
{
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
}
এখানে, Method Syntax ব্যবহার করা হয়েছে যেখানে Where() মেথড দিয়ে ৩০ এর বেশি বয়সের লোকদের ফিল্টার করা হয়েছে এবং OrderBy() দিয়ে সাজানো হয়েছে।
LINQ এর মাধ্যমে আপনি ডেটা ম্যানিপুলেশন যেমন, ফিল্টারিং, গ্রুপিং, অ্যাগ্রিগেটিং, মডিফাইং ইত্যাদি কার্য সম্পাদন করতে পারেন।
Where()
মেথড ব্যবহার করে আপনি নির্দিষ্ট শর্ত অনুযায়ী ডেটা ফিল্টার করতে পারেন।
using (var context = new ApplicationDbContext())
{
var adults = context.People
.Where(p => p.Age >= 18)
.ToList();
foreach (var person in adults)
{
Console.WriteLine($"Adult: {person.Name}, Age: {person.Age}");
}
}
এখানে, Where() মেথড ব্যবহার করে Age >= 18
শর্তে ফিল্টার করা হয়েছে এবং শুধু বড়দের নাম প্রিন্ট করা হয়েছে।
LINQ তে GroupBy() ব্যবহার করে আপনি ডেটাকে গ্রুপ করতে পারেন। উদাহরণস্বরূপ, ডেটাকে বিভাগ (Department) বা বয়সের উপর ভিত্তি করে গ্রুপ করা।
using (var context = new ApplicationDbContext())
{
var groupedByDepartment = context.People
.GroupBy(p => p.Department)
.Select(g => new
{
Department = g.Key,
People = g.ToList()
});
foreach (var group in groupedByDepartment)
{
Console.WriteLine($"Department: {group.Department}");
foreach (var person in group.People)
{
Console.WriteLine($" Name: {person.Name}, Age: {person.Age}");
}
}
}
এখানে, GroupBy() মেথড ব্যবহার করে Department
অনুসারে গ্রুপ করা হয়েছে এবং প্রতিটি গ্রুপের সদস্যদের নাম ও বয়স প্রিন্ট করা হয়েছে।
LINQ তে Sum(), Count(), Average(), Min(), Max() মেথড ব্যবহার করে ডেটার উপর অ্যাগ্রিগেশন অপারেশন করা যায়।
using (var context = new ApplicationDbContext())
{
var totalAge = context.People
.Where(p => p.Age > 18)
.Sum(p => p.Age);
Console.WriteLine($"Total Age of Adults: {totalAge}");
}
এখানে, Sum() মেথড ব্যবহার করে Age
এর যোগফল বের করা হয়েছে যাদের বয়স ১৮ এর বেশি।
LINQ তে OrderBy() এবং OrderByDescending() ব্যবহার করে ডেটা সাজানো যায়।
using (var context = new ApplicationDbContext())
{
var sortedByAge = context.People
.OrderBy(p => p.Age) // Ascending order
.ToList();
foreach (var person in sortedByAge)
{
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
}
এখানে, OrderBy() মেথড ব্যবহার করে Age এর ভিত্তিতে ডেটা সাজানো হয়েছে (Ascending Order)।
FirstOrDefault()
বা SingleOrDefault()
মেথড ব্যবহার করে আপনি প্রথম বা একক রেকর্ড ফেচ করতে পারেন।
using (var context = new ApplicationDbContext())
{
var person = context.People
.FirstOrDefault(p => p.Name == "Alice");
if (person != null)
{
Console.WriteLine($"Found: {person.Name}, Age: {person.Age}");
}
}
এখানে, FirstOrDefault() মেথড ব্যবহার করে "Alice" নামের প্রথম রেকর্ডটি ফেচ করা হয়েছে।
LINQ এর মাধ্যমে ডেটা ফেচ করার পাশাপাশি, Entity Framework ব্যবহার করে ডেটা আপডেট (update) এবং মুছে ফেলা (delete) করা যেতে পারে।
using (var context = new ApplicationDbContext())
{
var person = context.People
.FirstOrDefault(p => p.Name == "Alice");
if (person != null)
{
person.Age = 26; // Age আপডেট করা
context.SaveChanges(); // পরিবর্তন সেভ করা
}
}
এখানে, "Alice" নামের ব্যক্তির বয়স আপডেট করা হয়েছে এবং SaveChanges()
এর মাধ্যমে পরিবর্তন সেভ করা হয়েছে।
using (var context = new ApplicationDbContext())
{
var person = context.People
.FirstOrDefault(p => p.Name == "Bob");
if (person != null)
{
context.People.Remove(person); // ডেটা মুছে ফেলা
context.SaveChanges(); // পরিবর্তন সেভ করা
}
}
এখানে, "Bob" নামের ব্যক্তির রেকর্ড মুছে ফেলা হয়েছে।
LINQ একটি শক্তিশালী এবং সহজ পদ্ধতি যা ডেটাকে ফেচ এবং ম্যানিপুলেট করার জন্য ব্যবহৃত হয়। LINQ এর মাধ্যমে ডেটা ফেচ, ফিল্টার, গ্রুপিং, অ্যাগ্রিগেশন, সাজানো, এবং আপডেট করা সহজ এবং প্রাকৃতিকভাবে করা সম্ভব। Entity Framework এর সাহায্যে আপনি LINQ ব্যবহার করে ডাটাবেস থেকে ডেটা ফেচ এবং ম্যানিপুলেট করতে পারেন। LINQ এর Method Syntax এবং Query Syntax উভয়ই ডেটা ম্যানিপুলেশনের জন্য সহায়ক।
common.read_more