LINQ (Language Integrated Query) .NET এ উপলব্ধ একটি শক্তিশালী কুয়েরি টেকনিক যা বিভিন্ন ধরনের Collections (সংগ্রহ) থেকে ডেটা অ্যাক্সেস এবং ম্যানিপুলেট করার জন্য ব্যবহৃত হয়। LINQ দিয়ে আমরা সহজেই বিভিন্ন Collection types যেমন Dictionary, Queue, এবং Stack থেকে ডেটা কুয়েরি করতে পারি। নিচে এসব সংগ্রহের সাথে LINQ ব্যবহার করার কিছু উদাহরণ দেওয়া হলো।
LINQ এবং Dictionary
Dictionary হল একটি key-value pair সংগ্রহ যা নির্দিষ্ট key এর মাধ্যমে value রিটার্ন করে। LINQ দিয়ে Dictionary এর উপাদানগুলোকে filter, sort, বা transform করা যায়।
Dictionary এর উপর LINQ ব্যবহার
Dictionary<int, string> students = new Dictionary<int, string>
{
{ 1, "Alice" },
{ 2, "Bob" },
{ 3, "Charlie" },
{ 4, "David" }
};
// LINQ ব্যবহার করে Dictionary তে filter করা
var query = from student in students
where student.Key > 2
select student;
foreach (var student in query)
{
Console.WriteLine($"Key: {student.Key}, Name: {student.Value}");
}
আউটপুট:
Key: 3, Name: Charlie
Key: 4, Name: David
এখানে, Dictionary থেকে যাদের key 2 এর বেশি, তাদের নাম এবং key দেখানো হয়েছে।
Dictionary এর মধ্যে Sorting (OrderBy) ব্যবহার
var sortedQuery = from student in students
orderby student.Value ascending
select student;
foreach (var student in sortedQuery)
{
Console.WriteLine($"Key: {student.Key}, Name: {student.Value}");
}
আউটপুট:
Key: 1, Name: Alice
Key: 2, Name: Bob
Key: 3, Name: Charlie
Key: 4, Name: David
এখানে OrderBy ব্যবহার করে Dictionary এর নামগুলো ascending (বৃদ্ধি) অর্ডারে সাজানো হয়েছে।
LINQ এবং Queue
Queue হল একটি FIFO (First In, First Out) ডেটা স্ট্রাকচার, যার মাধ্যমে আপনি প্রথমে যোগ করা উপাদানটি প্রথমে পেতে পারেন। LINQ দিয়ে Queue থেকে ডেটা কুয়েরি করা যায়, তবে Queue এর জন্য ডেটা সরাসরি পরিবর্তন বা ইটারেট করার সুবিধা সীমিত।
Queue এর উপর LINQ ব্যবহার
Queue<int> numbersQueue = new Queue<int>();
numbersQueue.Enqueue(1);
numbersQueue.Enqueue(2);
numbersQueue.Enqueue(3);
numbersQueue.Enqueue(4);
// LINQ ব্যবহার করে Queue তে filter করা
var query = from num in numbersQueue
where num > 2
select num;
foreach (var num in query)
{
Console.WriteLine(num);
}
আউটপুট:
3
4
এখানে, Queue থেকে যেসব সংখ্যার মান 2 এর বেশি, সেগুলি কুয়েরি করা হয়েছে।
LINQ এবং Stack
Stack হল একটি LIFO (Last In, First Out) ডেটা স্ট্রাকচার, যেখানে আপনি সর্বশেষ যোগ করা উপাদানটি প্রথমে পাবেন। LINQ দিয়ে Stack এর উপাদানগুলোকে কুয়েরি করা যায়।
Stack এর উপর LINQ ব্যবহার
Stack<int> numbersStack = new Stack<int>();
numbersStack.Push(1);
numbersStack.Push(2);
numbersStack.Push(3);
numbersStack.Push(4);
// LINQ ব্যবহার করে Stack তে filter করা
var query = from num in numbersStack
where num % 2 == 0
select num;
foreach (var num in query)
{
Console.WriteLine(num);
}
আউটপুট:
4
2
এখানে, Stack থেকে শুধুমাত্র যে উপাদানগুলির মান even (যুগল), তা কুয়েরি করা হয়েছে। Stack এর ক্ষেত্রে উপাদানগুলি LIFO পদ্ধতিতে প্রক্রিয়া করা হবে, অর্থাৎ সর্বশেষে যোগ করা উপাদানটি প্রথমে প্রক্রিয়া হবে।
LINQ ব্যবহার করে Collections এর Manipulation
LINQ দিয়ে আপনি filtering, sorting, grouping, projection, এবং আরও অনেক ধরনের অপারেশন করতে পারেন।
Dictionary, Queue এবং Stack এর ক্ষেত্রে সাধারণ LINQ অপারেশন
- Filtering: উপরের উদাহরণগুলোতে দেখানো হয়েছে কিভাবে Where ব্যবহার করে ডেটা ফিল্টার করা যায়।
- Sorting: OrderBy এবং OrderByDescending ব্যবহার করে আপনি যেকোনো collection কে ascending বা descending অর্ডারে সাজাতে পারেন।
- Grouping: LINQ দিয়ে আপনি ডেটা গ্রুপিংও করতে পারেন, যেমন যদি আপনি Dictionary থেকে value অনুসারে গ্রুপ করতে চান।
- Projection: LINQ ব্যবহার করে আপনি একটি collection থেকে নতুন object তৈরি করতে পারেন (যেমন select করে একটি নতুন এনোমি অথবা class তৈরি করা)।
LINQ গ্রুপিং উদাহরণ:
Dictionary<string, string> countries = new Dictionary<string, string>
{
{ "USA", "North America" },
{ "Canada", "North America" },
{ "Brazil", "South America" },
{ "India", "Asia" },
{ "China", "Asia" }
};
// গ্রুপিং করে দেশগুলিকে মহাদেশ অনুযায়ী দেখানো
var groupedCountries = from country in countries
group country by country.Value into countryGroup
select countryGroup;
foreach (var group in groupedCountries)
{
Console.WriteLine(group.Key);
foreach (var country in group)
{
Console.WriteLine($" {country.Key}");
}
}
আউটপুট:
North America
USA
Canada
South America
Brazil
Asia
India
China
এখানে, group by অপারেটরের মাধ্যমে Dictionary এর দেশগুলোকে Continent (মহাদেশ) অনুসারে গ্রুপ করা হয়েছে।
উপসংহার
LINQ এর মাধ্যমে Dictionary, Queue, এবং Stack এর উপর বিভিন্ন অপারেশন করা সহজ এবং কার্যকরী। এগুলি ব্যবহার করে আপনি ডেটাকে ফিল্টার, সাজানো, গ্রুপিং এবং আরো অনেক কিছু করতে পারবেন, যা ডেটা ম্যানিপুলেশনের প্রক্রিয়া অনেক সহজ করে তোলে। LINQ একটি শক্তিশালী টুল যা .NET ডেভেলপারদের ডেটা সংগ্রহের সাথে কাজ করার সময় আরও বেশি নমনীয়তা এবং ক্ষমতা প্রদান করে।
Read more