Except Method

Microsoft Technologies - লিংক (LinQ) LINQ এ সেট অপারেশন (Set Operations in LINQ) |
232
232

LINQ Except মেথড ব্যবহার করে একটি ডেটা সংগ্রহ থেকে অন্য একটি ডেটা সংগ্রহের উপাদানগুলো বাদ দিতে পারেন। এটি দুটি সংগ্রহের মধ্যে যেসব উপাদান প্রথম সংগ্রহে আছে কিন্তু দ্বিতীয় সংগ্রহে নেই, সেই উপাদানগুলো প্রদান করে। সহজভাবে বললে, Except মেথডটি দুটি সংগ্রহের পার্থক্য বের করে দেয়।


Except Method এর কার্যপদ্ধতি

Except মেথড দুটি সংগ্রহের উপাদান তুলনা করে এবং প্রথম সংগ্রহের এমন উপাদানগুলোকেই নির্বাচন করে যেগুলি দ্বিতীয় সংগ্রহে নেই। এটি সাধারণত ডেটার তুলনা এবং ফিল্টারিং করতে ব্যবহৃত হয়।


Syntax:

IEnumerable<T> Except(IEnumerable<T> second);

এখানে:

  • T: উপাদানের ধরন (যেমন, int, string, বা যে কোনো কাস্টম টাইপ)
  • second: দ্বিতীয় সংগ্রহ (যা প্রথম সংগ্রহের উপাদানগুলোর সঙ্গে তুলনা করা হয়)

উদাহরণ:

ধরা যাক, আপনার কাছে দুটি তালিকা রয়েছে, এবং আপনি চান যে প্রথম তালিকার এমন উপাদানগুলো বের করা হোক, যেগুলি দ্বিতীয় তালিকায় নেই।

List<int> list1 = new List<int> { 1, 2, 3, 4, 5 };
List<int> list2 = new List<int> { 3, 4, 5, 6, 7 };

// Except ব্যবহার করে list1 থেকে list2 এর উপাদান বাদ দেওয়া
var result = list1.Except(list2);

foreach (var item in result)
{
    Console.WriteLine(item);  // Output: 1, 2
}

এখানে Except মেথডটি list1 থেকে 3, 4, 5 বাদ দিয়ে 1, 2 উপাদানগুলো ফিরিয়ে দিয়েছে, কারণ এই উপাদানগুলো list2 তে নেই।


কিছু গুরুত্বপূর্ণ বিষয়:

  • Distinct: Except মেথডটি Distinct মেথডের মতোই কাজ করে, কারণ এটি প্রতিটি উপাদান একবারই ফেরত দেয়। অর্থাৎ, যদি প্রথম সংগ্রহে কোনো ডুপ্লিকেট উপাদান থাকে, তবে সেগুলি বাদ দিয়ে শুধুমাত্র ইউনিক (distinct) মানগুলো ফেরত পাওয়া যায়।
  • Order Preservation: Except মেথডটি প্রথম সংগ্রহের উপাদানের ক্রম (order) সংরক্ষণ করে, অর্থাৎ যেভাবে প্রথম সংগ্রহে উপাদানগুলো সাজানো ছিল, সেভাবেই সেগুলি ফিরে আসবে।
  • Custom Objects: যদি আপনি কাস্টম অবজেক্ট ব্যবহার করেন, তবে Except সঠিকভাবে কাজ করবে না যতক্ষণ না আপনি সেই অবজেক্টের সমতা নির্ধারণ (equality comparison) সঠিকভাবে সেট না করেন। এর জন্য আপনাকে IEqualityComparer<T> ইন্টারফেস ইমপ্লিমেন্ট করতে হবে।

Custom Objects Example:

ধরা যাক, আপনার কাছে একটি কাস্টম ক্লাস Person আছে এবং আপনি দুইটি List এর মধ্যে পার্থক্য বের করতে চান:

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }

    public override bool Equals(object obj)
    {
        var person = obj as Person;
        return person != null && Name == person.Name && Age == person.Age;
    }

    public override int GetHashCode()
    {
        return Name.GetHashCode() ^ Age.GetHashCode();
    }
}

List<Person> list1 = new List<Person>
{
    new Person { Name = "Alice", Age = 30 },
    new Person { Name = "Bob", Age = 25 },
    new Person { Name = "Charlie", Age = 35 }
};

List<Person> list2 = new List<Person>
{
    new Person { Name = "Alice", Age = 30 },
    new Person { Name = "David", Age = 40 }
};

// Except ব্যবহার করে list1 থেকে list2 এর Person বাদ দেওয়া
var result = list1.Except(list2);

foreach (var person in result)
{
    Console.WriteLine($"{person.Name}, {person.Age}");
    // Output: Bob, 25
    //         Charlie, 35
}

এখানে Equals এবং GetHashCode মেথডটি Person ক্লাসে কাস্টমাইজ করা হয়েছে যাতে Except সঠিকভাবে Person অবজেক্টগুলির তুলনা করতে পারে।


Conclusion

LINQ এর Except মেথড দুটি সংগ্রহের মধ্যে যেসব উপাদান একত্রে থাকে না, শুধুমাত্র সেগুলিকে বের করে। এটি ডেটা ফিল্টার এবং তুলনা করার জন্য অত্যন্ত কার্যকরী, বিশেষ করে যখন আপনাকে দুটি সংগ্রহের পার্থক্য বের করতে হয়।

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

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

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

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