কম্পিউটার টিউটোরিয়াল

LINQ C#-তে Union, Intersect এবং Except অপারেটর

অপারেটর সংক্ষেপে

অপারেটরকাজসেট থিওরি
Unionএকাধিক কালেকশন একসাথে করে, ডুপ্লিকেট বাদ দিয়ে ইউনিক এলিমেন্ট রিটার্ন করেA ∪ B
Intersectদুই সিকোয়েন্সে সাধারণ (কমন) এলিমেন্ট রিটার্ন করেA ∩ B
Exceptপ্রথম সিকোয়েন্স থেকে দ্বিতীয় সিকোয়েন্সের এলিমেন্ট বাদ দিয়ে বাকিগুলো রিটার্ন করেA - B

উদাহরণ

using System;
using System.Linq;

class Program {
    static void Main() {
        int[] count1 = { 1, 2, 3, 4 };
        int[] count2 = { 2, 4, 7 };
        
        var resultUnion = count1.Union(count2);
        var resultIntersect = count1.Intersect(count2);
        var resultExcept = count1.Except(count2);
        
        Console.WriteLine("Union:");
        foreach (var item in resultUnion) Console.WriteLine(item);
        
        Console.WriteLine("\nIntersect:");
        foreach (var item in resultIntersect) Console.WriteLine(item);
        
        Console.WriteLine("\nExcept:");
        foreach (var item in resultExcept) Console.WriteLine(item);
        
        Console.ReadKey();
    }
}

আউটপুট:

Union:
1
2
3
4
7

Intersect:
2
4

Except:
1
3

মহত্বপূর্ণ বৈশিষ্ট্য

  • Deferred Execution: ফলাফল এনুমারেট করার সময়ই এক্সিকিউট হয়
  • Distinct: Union এবং Intersect স্বয়ংক্রিয়ভাবে ডুপ্লিকেট সরিয়ে দেয়
  • অর্ডার: Union-এ প্রথম সিকোয়েন্সের অর্ডার রক্ষা হয়, তারপর দ্বিতীয়র নয়ুনিক এলিমেন্ট
  • কাস্টম কম্পেয়ারার: Union(second, comparer) দিয়ে কাস্টম সমতা যাচাই করা যায়

কাস্টম অবজেক্টের জন্য উদাহরণ

class Product {
    public int Id { get; set; }
    public string Name { get; set; }
}

var list1 = new[] {
    new Product { Id = 1, Name = "A" },
    new Product { Id = 2, Name = "B" }
};

var list2 = new[] {
    new Product { Id = 2, Name = "B" },
    new Product { Id = 3, Name = "C" }
};

// ডিফল্ট রেফারেন্স কম্পেয়ারার ব্যবহার করবে (কন্টেন্ট কম্পেয়ার করবে না)
// কাস্টম কম্পেয়ারার দরকার:
var union = list1.Union(list2, new ProductComparer());

class ProductComparer : IEqualityComparer<Product> {
    public bool Equals(Product x, Product y) => x.Id == y.Id;
    public int GetHashCode(Product obj) => obj.Id.GetHashCode();
}

অন্য উপায় (Query Syntax)

var union = (from x in count1 select x)
    .Union(from x in count2 select x);

var intersect = (from x in count1 select x)
    .Intersect(from x in count2 select x);

var except = (from x in count1 select x)
    .Except(from x in count2 select x);
  1. জাভাস্ক্রিপ্টে লজিক্যাল অপারেটরগুলো কী কী?

  2. জাভাস্ক্রিপ্ট অপারেটরগুলো কী কী?

  3. সি অপারেটর এবং পাঞ্চুয়েটর কী কী?

  4. সি ভাষায় ব্যবহৃত বিভিন্ন অপারেটর এবং এক্সপ্রেশন কী কী?