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

C#-এ LINQ এক্সটেনশন মেথড দিয়ে লেফট আউটার জয়েন বাস্তবায়ন

ইনার জয়েন (INNER JOIN)-এ শুধু ম্যাচ হওয়া এলিমেন্টগুলো রেজাল্ট সেটে থাকে। নন-ম্যাচিং এলিমেন্টগুলো বাদ পড়ে।

লেফট আউটার জয়েন (LEFT OUTER JOIN)-এ সকল ম্যাচিং এলিমেন্ট পাশাপাশি লেফট কালেকশনের নন-ম্যাচিং এলিমেন্টও রেজাল্ট সেটে থাকে।

উদাহরণ দিয়ে বুঝি। Department এবং Employee ক্লাস দুটি বিবেচনা করুন। মেরি (Mary) নামে একটি কর্মী আছে যার কোনো ডিপার্টমেন্ট নেই। ইনার জয়েনে তার রেকর্ড আসবে না, কিন্তু লেফট আউটার জয়েনে আসবে।

উদাহরণ

static class Program
{
    static void Main(string[] args)
    {
        var result = Employee.GetAllEmployees()
            .GroupJoin(Department.GetAllDepartments(),
                e => e.DepartmentID,
                d => d.ID,
                (emp, depts) => new { emp, depts })
            .SelectMany(z => z.depts.DefaultIfEmpty(),
                (a, b) => new
                {
                    EmployeeName = a.emp.Name,
                    DepartmentName = b == null ? "No Department" : b.Name
                });

        foreach (var v in result)
        {
            Console.WriteLine(" " + v.EmployeeName + "\t" + v.DepartmentName);
        }
    }
}

public class Department
{
    public int ID { get; set; }
    public string Name { get; set; }
    public static List<Department> GetAllDepartments()
    {
        return new List<Department>()
        {
            new Department { ID = 1, Name = "IT" },
            new Department { ID = 2, Name = "HR" },
        };
    }
}

public class Employee
{
    public int ID { get; set; }
    public string Name { get; set; }
    public int DepartmentID { get; set; }
    public static List<Employee> GetAllEmployees()
    {
        return new List<Employee>()
        {
            new Employee { ID = 1, Name = "Mark", DepartmentID = 1 },
            new Employee { ID = 2, Name = "Steve", DepartmentID = 2 },
            new Employee { ID = 3, Name = "Ben", DepartmentID = 1 },
            new Employee { ID = 4, Name = "Philip", DepartmentID = 1 },
            new Employee { ID = 5, Name = "Mary" }
        };
    }
}

ব্যাখ্যা: GroupJoin দিয়ে গ্রুপ তৈরি করা হয়, তারপর SelectMany সাথে DefaultIfEmpty() ব্যবহার করে লেফট আউটার জয়েন অর্জন করা হয়। যদি ডিপার্টমেন্ট নাই থাকে, তবে "No Department" দেখানো হয়।

  1. Python দিয়ে MySQL-এ LEFT JOIN করা

  2. Python দিয়ে MySQL-এ INNER JOIN করা

  3. পাইথনে ফাইল এক্সটেনশন এক্সট্রাক্ট করার পদ্ধতি

  4. উইন্ডোজ ১১ ইস্যু দ্রুত ফিক্স করার ৬টি প্রমাণিত পদ্ধতি