Inner Join হল দুটি ডেটাসেট বা টেবিলের মধ্যে এমন একটি সম্পর্ক যেখানে শুধুমাত্র উভয় টেবিলের মিলিত রেকর্ডগুলি ফেরত দেওয়া হয়। LINQ to DataSet ব্যবহার করে Inner Join করা যায় যেখানে দুটি বা তার বেশি DataTable বা DataSet-এর মধ্যে মিলিত ডেটা বের করতে LINQ কুয়েরি ব্যবহার করা হয়।
LINQ to DataSet-এ Inner Join করতে join কিওয়ার্ড ব্যবহৃত হয়, যা দুইটি ডেটাসেট বা DataTable-কে নির্দিষ্ট একটি কলামের ভিত্তিতে মিলিত করে। নিচে একটি উদাহরণ দেওয়া হয়েছে যেখানে দুটি DataTable-এর উপর Inner Join ব্যবহার করা হয়েছে।
ধরা যাক, আপনার কাছে দুটি DataTable আছে:
ProductID
, ProductName
, Category
রয়েছে।OrderID
, ProductID
, এবং Quantity
রয়েছে।আমরা এই দুটি টেবিলের ProductID
কলামের উপর Inner Join করতে চাই।
using System;
using System.Data;
using System.Linq;
class Program
{
static void Main()
{
// Products DataTable তৈরি
DataTable products = new DataTable("Products");
products.Columns.Add("ProductID", typeof(int));
products.Columns.Add("ProductName", typeof(string));
products.Columns.Add("Category", typeof(string));
products.Rows.Add(1, "Product1", "Category1");
products.Rows.Add(2, "Product2", "Category1");
products.Rows.Add(3, "Product3", "Category2");
// Orders DataTable তৈরি
DataTable orders = new DataTable("Orders");
orders.Columns.Add("OrderID", typeof(int));
orders.Columns.Add("ProductID", typeof(int));
orders.Columns.Add("Quantity", typeof(int));
orders.Rows.Add(101, 1, 5);
orders.Rows.Add(102, 2, 3);
orders.Rows.Add(103, 1, 7);
orders.Rows.Add(104, 3, 2);
// LINQ কুয়েরি দিয়ে Inner Join করা
var joinQuery = from product in products.AsEnumerable()
join order in orders.AsEnumerable()
on product.Field<int>("ProductID") equals order.Field<int>("ProductID")
select new
{
ProductName = product.Field<string>("ProductName"),
Category = product.Field<string>("Category"),
OrderID = order.Field<int>("OrderID"),
Quantity = order.Field<int>("Quantity")
};
// Inner Join এর ফলাফল প্রিন্ট করা
foreach (var item in joinQuery)
{
Console.WriteLine($"Product: {item.ProductName}, Category: {item.Category}, OrderID: {item.OrderID}, Quantity: {item.Quantity}");
}
}
}
আউটপুট:
Product: Product1, Category: Category1, OrderID: 101, Quantity: 5
Product: Product1, Category: Category1, OrderID: 103, Quantity: 7
Product: Product2, Category: Category1, OrderID: 102, Quantity: 3
Product: Product3, Category: Category2, OrderID: 104, Quantity: 2
এখানে Products এবং Orders টেবিলের মধ্যে ProductID কলামের উপর Inner Join করা হয়েছে। শুধুমাত্র সেই রেকর্ডগুলো ফলস্বরূপ আসবে যেখানে উভয় টেবিলের মধ্যে মিল রয়েছে।
on
কিওয়ার্ড ব্যবহার করে দুইটি টেবিলের মধ্যে মিলিত হওয়া কন্ডিশন নির্ধারণ করা হয়।select new
ব্যবহার করে একাধিক কলাম একটি অ্যানোনিমাস টাইপে রিটার্ন করা হয়, যা প্রয়োজনে একটি নতুন অবজেক্টে মেলে দেখানো হয়।আপনি একাধিক টেবিলের সাথে Inner Join করতে চাইলে আরও বেশি join
ক্লজ ব্যবহার করতে পারেন। নিচে তিনটি টেবিলের মধ্যে Inner Join করার উদাহরণ দেখানো হল।
using System;
using System.Data;
using System.Linq;
class Program
{
static void Main()
{
// Products DataTable
DataTable products = new DataTable("Products");
products.Columns.Add("ProductID", typeof(int));
products.Columns.Add("ProductName", typeof(string));
products.Rows.Add(1, "Product1");
products.Rows.Add(2, "Product2");
// Orders DataTable
DataTable orders = new DataTable("Orders");
orders.Columns.Add("OrderID", typeof(int));
orders.Columns.Add("ProductID", typeof(int));
orders.Rows.Add(101, 1);
orders.Rows.Add(102, 2);
// Customers DataTable
DataTable customers = new DataTable("Customers");
customers.Columns.Add("CustomerID", typeof(int));
customers.Columns.Add("CustomerName", typeof(string));
customers.Rows.Add(1, "Customer1");
customers.Rows.Add(2, "Customer2");
// LINQ Query with Multiple Joins
var joinQuery = from product in products.AsEnumerable()
join order in orders.AsEnumerable()
on product.Field<int>("ProductID") equals order.Field<int>("ProductID")
join customer in customers.AsEnumerable()
on order.Field<int>("OrderID") equals customer.Field<int>("CustomerID")
select new
{
ProductName = product.Field<string>("ProductName"),
CustomerName = customer.Field<string>("CustomerName"),
OrderID = order.Field<int>("OrderID")
};
// Multiple Join Results
foreach (var item in joinQuery)
{
Console.WriteLine($"Product: {item.ProductName}, Customer: {item.CustomerName}, OrderID: {item.OrderID}");
}
}
}
এই উদাহরণে Products, Orders, এবং Customers টেবিলের মধ্যে Inner Join ব্যবহার করা হয়েছে এবং তিনটি টেবিলের তথ্য একত্রে আনা হয়েছে।
common.read_more