Complex Projection এবং Nested Queries

Microsoft Technologies - লিংক (LinQ) LINQ এ ডেটা প্রজেকশন (Data Projection in LINQ) |
265
265

Complex Projection এবং Nested Queries হল LINQ কুয়েরি লেখার আরও উন্নত কৌশল, যা ডেটার বিভিন্ন দিক এবং সম্পর্কগুলি প্রক্রিয়া করতে সহায়ক। এগুলি বড় ডেটাসেটের মধ্যে প্যাটার্ন বা তথ্য বের করার জন্য শক্তিশালী টুলস হিসেবে কাজ করে। নিচে এগুলোর বিস্তারিত আলোচনা করা হলো।


Complex Projection

Complex Projection হল LINQ কুয়েরি ব্যবহার করে ডেটার বিভিন্ন ফিল্ড বা প্রোপার্টি নির্বাচন করা, যেখানে সাধারণ Select অপারেশন ছাড়াও একাধিক প্রোপার্টি, সাব-অবজেক্ট বা কাস্টম অবজেক্ট ফিরিয়ে আনা হয়। এতে, ডেটার একটি বা একাধিক অংশকে কাস্টম অবজেক্টে রূপান্তরিত করা হয়, যা কমপ্লেক্স ডেটা রিটার্ন করে।

Complex Projection এর উদাহরণ:

ধরা যাক, আমাদের কাছে একটি Customer ক্লাস রয়েছে যা Name, Address এবং Orders ফিল্ড ধারণ করে, যেখানে Orders একটি লিস্ট অব Order অবজেক্ট।

public class Customer
{
    public string Name { get; set; }
    public string Address { get; set; }
    public List<Order> Orders { get; set; }
}

public class Order
{
    public int OrderID { get; set; }
    public DateTime OrderDate { get; set; }
    public decimal TotalAmount { get; set; }
}

এখন, আমরা যদি Customer ক্লাসের Name এবং TotalAmount যোগ করে কাস্টম অবজেক্ট তৈরি করতে চাই, তাহলে Complex Projection ব্যবহার করব।

List<Customer> customers = new List<Customer>
{
    new Customer
    {
        Name = "Alice",
        Address = "New York",
        Orders = new List<Order>
        {
            new Order { OrderID = 1, OrderDate = DateTime.Now, TotalAmount = 100 },
            new Order { OrderID = 2, OrderDate = DateTime.Now.AddDays(-1), TotalAmount = 200 }
        }
    },
    new Customer
    {
        Name = "Bob",
        Address = "Los Angeles",
        Orders = new List<Order>
        {
            new Order { OrderID = 3, OrderDate = DateTime.Now.AddDays(-2), TotalAmount = 150 }
        }
    }
};

// Complex Projection: Customer Name এবং Total Order Amount নির্বাচন করা
var result = from customer in customers
             select new
             {
                 customer.Name,
                 TotalAmount = customer.Orders.Sum(order => order.TotalAmount)
             };

foreach (var item in result)
{
    Console.WriteLine($"{item.Name}: {item.TotalAmount}");
}

এখানে Select এর মাধ্যমে আমরা Name এবং Orders এর TotalAmount এর যোগফলকে কাস্টম অবজেক্ট হিসেবে ফিরিয়ে দিয়েছি। এই কুয়েরি ফলস্বরূপ:

Alice: 300
Bob: 150

এটি Complex Projection এর একটি সহজ উদাহরণ, যেখানে Order অবজেক্টের মান ব্যবহার করে একটি নতুন প্রোপার্টি তৈরি করা হয়েছে।


Nested Queries

Nested Queries হল এমন LINQ কুয়েরি যেখানে একটি কুয়েরি অন্য একটি কুয়েরির মধ্যে থাকে। সাধারণত, এক বা একাধিক কুয়েরি সাবকুয়েরি হিসেবে ব্যবহার করা হয়, যা প্রধান কুয়েরির ফলাফল তৈরি করতে সাহায্য করে। এটি সাধারণত যখন প্রয়োজন হয় ডেটার মধ্যে সম্পর্কের ভিত্তিতে নতুন ফলাফল তৈরি করতে, তখন ব্যবহার করা হয়।

Nested Queries এর উদাহরণ:

ধরা যাক, আমাদের কাছে Order এবং Product ক্লাস আছে, যেখানে প্রতিটি Order এর মধ্যে একাধিক Product থাকে। আমরা যদি এমন একটি কুয়েরি তৈরি করতে চাই, যা Customer অনুযায়ী প্রতিটি Order এর জন্য সর্বোচ্চ মোট অর্ডার মূল্য বের করবে, তাহলে Nested Query ব্যবহার করতে হবে।

public class Order
{
    public int OrderID { get; set; }
    public string CustomerName { get; set; }
    public List<Product> Products { get; set; }
}

public class Product
{
    public string ProductName { get; set; }
    public decimal Price { get; set; }
}

List<Order> orders = new List<Order>
{
    new Order
    {
        OrderID = 1,
        CustomerName = "Alice",
        Products = new List<Product>
        {
            new Product { ProductName = "Laptop", Price = 1000 },
            new Product { ProductName = "Mouse", Price = 50 }
        }
    },
    new Order
    {
        OrderID = 2,
        CustomerName = "Bob",
        Products = new List<Product>
        {
            new Product { ProductName = "Keyboard", Price = 75 },
            new Product { ProductName = "Monitor", Price = 300 }
        }
    },
    new Order
    {
        OrderID = 3,
        CustomerName = "Alice",
        Products = new List<Product>
        {
            new Product { ProductName = "Phone", Price = 500 },
            new Product { ProductName = "Headphones", Price = 100 }
        }
    }
};

// Nested Query: প্রতিটি Order এর জন্য সর্বোচ্চ মূল্য বের করা
var result = from order in orders
             group order by order.CustomerName into customerGroup
             select new
             {
                 Customer = customerGroup.Key,
                 MaxOrderAmount = (from product in customerGroup.SelectMany(order => order.Products)
                                   select product.Price).Max()
             };

foreach (var item in result)
{
    Console.WriteLine($"{item.Customer}: {item.MaxOrderAmount}");
}

এখানে Nested Query এর মধ্যে SelectMany() এবং একটি সাব-কুয়েরি ব্যবহার করা হয়েছে, যা Products থেকে সর্বোচ্চ Price বের করে। এই কুয়েরি ফলস্বরূপ:

Alice: 1000
Bob: 300

এটি একটি Nested Query এর উদাহরণ যেখানে এক কুয়েরি অন্য কুয়েরির ভিতরে ব্যবহার করা হয়েছে, এবং ডেটার একটি অংশকে আরও নির্দিষ্টভাবে প্রক্রিয়া করা হয়েছে।


সারাংশ

  • Complex Projection হল LINQ-এর মাধ্যমে ডেটা পরিবর্তন করে একটি নতুন অবজেক্ট তৈরি করার প্রক্রিয়া। এটি Select অপারেটরের মাধ্যমে একাধিক প্রোপার্টি বা সাব-অবজেক্টকে কাস্টম অবজেক্টে রূপান্তর করতে সহায়ক।
  • Nested Queries হল LINQ কুয়েরির মধ্যে অন্য কুয়েরি ব্যবহার করা, যা ডেটাবেসের মধ্যে সম্পর্কিত তথ্য প্রক্রিয়া করতে ব্যবহৃত হয়। এটি Subquery হিসেবে পরিচিত এবং সাধারণত জটিল সম্পর্কিত ডেটা বের করার জন্য ব্যবহৃত হয়।
common.content_added_by
টপ রেটেড অ্যাপ

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

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

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