Custom Object Collections এর উপর LINQ

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

LINQ (Language Integrated Query) শুধু ডেটাবেস বা DataTable এর জন্য নয়, বরং Custom Object Collections এর উপরও কার্যকরীভাবে ব্যবহার করা যায়। যখন আপনার নিজের তৈরি করা ক্লাসের অবজেক্টগুলোর একটি কোলেকশন থাকে, তখন LINQ ব্যবহার করে সেই কোলেকশনের উপর কুয়েরি চালানো খুবই সহজ হয়। এটি একটি শক্তিশালী পদ্ধতি, যা আপনাকে List, Array, Dictionary এবং অন্যান্য কোলেকশনের উপর কুয়েরি চালানোর অনুমতি দেয়।

এখানে Custom Object Collection হিসেবে একটি ক্লাস তৈরি করা হবে, তারপরে LINQ ব্যবহার করে সেই কোলেকশনের উপর কুয়েরি করা হবে।


Custom Object Collection তৈরি

ধরা যাক, আমরা একটি Product ক্লাস তৈরি করব এবং তার একটি List (কোলেকশন) ব্যবহার করব, যেখানে বিভিন্ন পণ্যের তথ্য থাকবে। তারপর LINQ ব্যবহার করে আমরা সেই কোলেকশনের উপর কুয়েরি চালাবো।


উদাহরণ: Custom Object Collection এ LINQ ব্যবহার

১. Product ক্লাস তৈরি এবং কোলেকশন

using System;
using System.Collections.Generic;
using System.Linq;

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

    public Product(int productId, string productName, string category, decimal price)
    {
        ProductID = productId;
        ProductName = productName;
        Category = category;
        Price = price;
    }
}

class Program
{
    static void Main()
    {
        // Custom Object Collection (List of Products)
        List<Product> products = new List<Product>
        {
            new Product(1, "Product1", "Category1", 20.5m),
            new Product(2, "Product2", "Category1", 30.0m),
            new Product(3, "Product3", "Category2", 15.5m),
            new Product(4, "Product4", "Category2", 25.0m),
            new Product(5, "Product5", "Category1", 12.0m)
        };

        // LINQ কুয়েরি: Price 20 এর বেশি পণ্য বের করা
        var expensiveProducts = from product in products
                                where product.Price > 20
                                select product;

        // ফলাফল প্রিন্ট করা
        foreach (var product in expensiveProducts)
        {
            Console.WriteLine($"Product: {product.ProductName}, Category: {product.Category}, Price: {product.Price}");
        }
    }
}

আউটপুট:

Product: Product2, Category: Category1, Price: 30
Product: Product4, Category: Category2, Price: 25

এখানে Product ক্লাসের একটি কোলেকশন তৈরি করা হয়েছে, এবং LINQ ব্যবহার করে ২০ এর বেশি মূল্যের পণ্যগুলো বের করা হয়েছে।


Custom Object Collection এ LINQ ব্যবহার করে আরও কিছু উদাহরণ

২. গ্রুপিং (Group By)

এখানে Category অনুসারে পণ্যগুলো গ্রুপ করা হয়েছে।

var groupedProducts = from product in products
                      group product by product.Category into productGroup
                      select new
                      {
                          Category = productGroup.Key,
                          Products = productGroup
                      };

foreach (var group in groupedProducts)
{
    Console.WriteLine($"Category: {group.Category}");
    foreach (var product in group.Products)
    {
        Console.WriteLine($" - {product.ProductName}, Price: {product.Price}");
    }
}

আউটপুট:

Category: Category1
 - Product1, Price: 20.5
 - Product2, Price: 30
 - Product5, Price: 12
Category: Category2
 - Product3, Price: 15.5
 - Product4, Price: 25

এখানে Category অনুসারে পণ্যগুলো গ্রুপ করা হয়েছে এবং প্রতিটি গ্রুপের পণ্যগুলোর নাম ও মূল্য দেখানো হয়েছে।

৩. অ্যাকগ্রিগেট ফাংশন ব্যবহার (Aggregate Functions)

এখানে Average, Sum, Count ইত্যাদি অ্যাগ্রিগেট ফাংশন ব্যবহার করা হয়েছে।

// মোট মূল্য বের করা
decimal totalPrice = products.Sum(p => p.Price);
Console.WriteLine($"Total Price of all products: {totalPrice}");

// গড় মূল্য বের করা
decimal averagePrice = products.Average(p => p.Price);
Console.WriteLine($"Average Price of products: {averagePrice}");

// পণ্যের সংখ্যা বের করা
int productCount = products.Count();
Console.WriteLine($"Total number of products: {productCount}");

আউটপুট:

Total Price of all products: 113
Average Price of products: 22.6
Total number of products: 5

৪. Order By (Sort) ব্যবহার

এখানে পণ্যের দাম অনুযায়ী পণ্যগুলো সাজানো হয়েছে।

var sortedProducts = from product in products
                     orderby product.Price descending
                     select product;

foreach (var product in sortedProducts)
{
    Console.WriteLine($"Product: {product.ProductName}, Price: {product.Price}");
}

আউটপুট:

Product: Product2, Price: 30
Product: Product4, Price: 25
Product: Product1, Price: 20.5
Product: Product5, Price: 12
Product: Product3, Price: 15.5

এখানে Price অনুযায়ী পণ্যগুলো DESCENDING (অবনমিত) অর্ডারে সাজানো হয়েছে।

৫. Distinct ব্যবহার (Remove Duplicates)

ধরা যাক, আপনার কোলেকশনে কিছু ডুপ্লিকেট পণ্য আছে এবং আপনি সেগুলো ফিল্টার করতে চান।

var distinctCategories = (from product in products
                          select product.Category).Distinct();

Console.WriteLine("Distinct Categories:");
foreach (var category in distinctCategories)
{
    Console.WriteLine(category);
}

আউটপুট:

Distinct Categories:
Category1
Category2

এখানে Distinct ব্যবহার করে পণ্যের ক্যাটেগরিগুলো এককভাবে বের করা হয়েছে।


সারাংশ

LINQ to Object Collections একটি শক্তিশালী টুল যা ডেভেলপারদের তাদের কাস্টম অবজেক্ট কোলেকশনে কুয়েরি চালানোর ক্ষমতা দেয়। এটি একাধিক কোলেকশন অপারেশন যেমন ফিল্টারিং, গ্রুপিং, অ্যাগ্রিগেটিং, সাজানো এবং ডুপ্লিকেট রিমুভ করার কাজগুলো সহজ ও দ্রুত করে তোলে। LINQ একটি declarative পদ্ধতি প্রদান করে, যা কোডের গঠন পরিষ্কার এবং পাঠযোগ্য রাখে।

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

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

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

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