Group Join এবং Nested Join

Microsoft Technologies - লিংক (LinQ) LINQ এ জয়েন অপারেশন (Join Operations in LINQ) |
266
266

LINQ-এ Join অপারেটরটি ব্যবহার করে দুটি বা তার বেশি ডেটা সোর্সকে একত্রিত করা যায়। তবে, যখন Group Join এবং Nested Join এর মতো কৌশল ব্যবহার করা হয়, তখন একটু ভিন্ন ধরনের ফলাফল পাওয়া যায়। এখানে আমরা Group Join এবং Nested Join এর মধ্যে পার্থক্য এবং তাদের ব্যবহার দেখব।


Group Join in LINQ

Group Join হল LINQ-এর একটি বিশেষ ধরনের জয়েন অপারেশন যা একটি টেবিলের প্রতিটি রেকর্ডের জন্য অন্য টেবিলের একাধিক রেকর্ড গ্রুপ করে। এর মাধ্যমে আপনি একটি one-to-many সম্পর্ক তৈরি করতে পারেন। এটি মূলত একটি left outer join এর মত কাজ করে যেখানে মূল (left) টেবিলের সব রেকর্ড থাকবে এবং তাদের সাথে সম্পর্কিত রেকর্ডগুলো গ্রুপ করা হবে।

Group Join সাধারণত into কিওয়ার্ডের সাথে ব্যবহার করা হয়, যাতে একটি গ্রুপ এক্সপ্রেশন তৈরি হয়, যা পরে select ব্লকে অ্যাক্সেস করা যায়।

Group Join এর সিনট্যাক্স

var result = from left in leftCollection
             join right in rightCollection on left.Key equals right.Key into groupResult
             select new { left, Group = groupResult };

এখানে:

  • leftCollection: প্রধান কোলেকশন বা টেবিল।
  • rightCollection: যোগ করা কোলেকশন বা টেবিল।
  • groupResult: দুটি কোলেকশনের সম্পর্কিত মানগুলোর একটি গ্রুপ।

Group Join এর উদাহরণ

class Customer
{
    public int CustomerID { get; set; }
    public string Name { get; set; }
}

class Order
{
    public int OrderID { get; set; }
    public int CustomerID { get; set; }
    public string Product { get; set; }
}

List<Customer> customers = new List<Customer>
{
    new Customer { CustomerID = 1, Name = "Alice" },
    new Customer { CustomerID = 2, Name = "Bob" },
    new Customer { CustomerID = 3, Name = "Charlie" }
};

List<Order> orders = new List<Order>
{
    new Order { OrderID = 101, CustomerID = 1, Product = "Laptop" },
    new Order { OrderID = 102, CustomerID = 1, Product = "Phone" },
    new Order { OrderID = 103, CustomerID = 2, Product = "Tablet" }
};

// Group Join এর ব্যবহার
var customerOrders = from customer in customers
                     join order in orders on customer.CustomerID equals order.CustomerID into customerGroup
                     select new 
                     { 
                         customer.Name,
                         Orders = customerGroup
                     };

foreach (var customer in customerOrders)
{
    Console.WriteLine($"{customer.Name} has the following orders:");
    foreach (var order in customer.Orders)
    {
        Console.WriteLine($"- {order.Product}");
    }
}
// Output:
// Alice has the following orders:
// - Laptop
// - Phone
// Bob has the following orders:
// - Tablet
// Charlie has the following orders:

এখানে:

  • Group Join ব্যবহার করে প্রতিটি Customer এর সাথে তার সমস্ত অর্ডার গ্রুপ করা হয়েছে।
  • Charlie এর কোন অর্ডার নেই, তাই সে শুধু তার নামের সাথে কোনো অর্ডার ছাড়াই দেখাবে।

Nested Join in LINQ

Nested Join হল LINQ এর একটি স্টাইল যেখানে একাধিক join অপারেশনকে একত্রিত করা হয় এবং তা nested query হিসাবে তৈরি করা হয়। এটি একধরনের join within a join এবং সাধারণত multiple tables এর মধ্যে সম্পর্ক তৈরি করার জন্য ব্যবহৃত হয়।

এখানে, আমরা প্রথমে একটি সাধারণ join করি, তারপর সেই join এর মধ্যে আরেকটি join করি।

Nested Join এর সিনট্যাক্স

var result = from a in collection1
             join b in collection2 on a.Key equals b.Key
             join c in collection3 on b.Key equals c.Key
             select new { a, b, c };

এখানে:

  • প্রথমে collection1 এবং collection2 এর মধ্যে একটি join হবে।
  • তারপর, সেই join এর ভিতরে collection3 এর সাথে আরেকটি join হবে।

Nested Join এর উদাহরণ

class Customer
{
    public int CustomerID { get; set; }
    public string Name { get; set; }
}

class Order
{
    public int OrderID { get; set; }
    public int CustomerID { get; set; }
    public string Product { get; set; }
}

class Product
{
    public int ProductID { get; set; }
    public string ProductName { get; set; }
}

List<Customer> customers = new List<Customer>
{
    new Customer { CustomerID = 1, Name = "Alice" },
    new Customer { CustomerID = 2, Name = "Bob" }
};

List<Order> orders = new List<Order>
{
    new Order { OrderID = 101, CustomerID = 1, Product = "Laptop" },
    new Order { OrderID = 102, CustomerID = 1, Product = "Phone" },
    new Order { OrderID = 103, CustomerID = 2, Product = "Tablet" }
};

List<Product> products = new List<Product>
{
    new Product { ProductID = 1, ProductName = "Laptop" },
    new Product { ProductID = 2, ProductName = "Phone" },
    new Product { ProductID = 3, ProductName = "Tablet" }
};

// Nested Join ব্যবহার করা
var customerOrders = from customer in customers
                     join order in orders on customer.CustomerID equals order.CustomerID
                     join product in products on order.Product equals product.ProductName
                     select new 
                     {
                         customer.Name,
                         order.OrderID,
                         product.ProductName
                     };

foreach (var order in customerOrders)
{
    Console.WriteLine($"{order.Name} ordered {order.ProductName} with OrderID: {order.OrderID}");
}
// Output:
// Alice ordered Laptop with OrderID: 101
// Alice ordered Phone with OrderID: 102
// Bob ordered Tablet with OrderID: 103

এখানে:

  • প্রথমে Customer এবং Order এর মধ্যে join হয়েছে।
  • তারপর সেই join এর মধ্যে Order এবং Product এর মধ্যে আরেকটি join হয়েছে।
  • প্রতিটি গ্রাহক তার অর্ডার এবং অর্ডার করা পণ্যের নামসহ প্রিন্ট করা হয়েছে।

Group Join এবং Nested Join এর মধ্যে পার্থক্য

বৈশিষ্ট্যGroup JoinNested Join
কাজের ধরনএকাধিক সম্পর্কিত রেকর্ডগুলিকে গ্রুপ করে।একাধিক join অপারেশন একসাথে করা।
ফলাফলএকটি রেকর্ডের সাথে সম্পর্কিত একাধিক রেকর্ডের গ্রুপ।একাধিক টেবিলের ডেটা একসাথে একত্রিত করা।
উপযুক্ত ব্যবহারএকাধিক সম্পর্কিত ডেটার গ্রুপিং প্রয়োজন হলে।একাধিক টেবিলের মধ্যে সম্পর্ক তৈরি করা।

সারাংশ

  • Group Join ব্যবহার করে one-to-many সম্পর্ক তৈরি করা যায় এবং এটি left outer join এর মতো কাজ করে যেখানে একটী রেকর্ডের সাথে একাধিক সম্পর্কিত রেকর্ড গ্রুপ করা হয়।
  • Nested Join একাধিক টেবিল বা কোলেকশনের মধ্যে সম্পর্ক তৈরি করার জন্য ব্যবহৃত হয়, যা সাধারণত একাধিক join অপারেশন একসাথে একত্রিত করে।

LINQ এ Group Join এবং Nested Join উভয় পদ্ধতি আপনাকে আপনার ডেটা আরো গভীরভাবে সম্পর্কিত করে কাজ করার সুযোগ দেয়।

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

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

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

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