LINQ এবং Collections (Dictionary, Queue, Stack)

Microsoft Technologies - লিংক (LinQ) LINQ to Objects |
214
214

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 অপারেশন

  1. Filtering: উপরের উদাহরণগুলোতে দেখানো হয়েছে কিভাবে Where ব্যবহার করে ডেটা ফিল্টার করা যায়।
  2. Sorting: OrderBy এবং OrderByDescending ব্যবহার করে আপনি যেকোনো collection কে ascending বা descending অর্ডারে সাজাতে পারেন।
  3. Grouping: LINQ দিয়ে আপনি ডেটা গ্রুপিংও করতে পারেন, যেমন যদি আপনি Dictionary থেকে value অনুসারে গ্রুপ করতে চান।
  4. 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 ডেভেলপারদের ডেটা সংগ্রহের সাথে কাজ করার সময় আরও বেশি নমনীয়তা এবং ক্ষমতা প্রদান করে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion