بائیں بیرونی جوائن کو کیسے انجام دیں - C# میں LINQ

Bayy Byrwny Jwayn Kw Kys Anjam Dy C My Linq



ایس کیو ایل میں بائیں ٹیبل اور دائیں ٹیبل سے مماثل ریکارڈ ظاہر کرنے کے لیے لیفٹ آؤٹر جوائن ایک قسم کا جوائن آپریشن ہے جو استعمال کیا جاتا ہے۔ LINQ میں، GroupJoin() اور SelectMany() طریقوں کا استعمال کرتے ہوئے بائیں بیرونی شمولیت کو انجام دیا جا سکتا ہے، اس مضمون میں C# کا استعمال کرتے ہوئے LINQ میں بائیں بیرونی شمولیت کو انجام دینے کے بارے میں بڑے پیمانے پر تبادلہ خیال کیا جائے گا۔

C# کا استعمال کرتے ہوئے LINQ میں بائیں بیرونی شمولیت کو کیسے انجام دیں

LINQ میں بائیں بیرونی شمولیت کو انجام دینے کے لیے، آپ ایک مشترکہ کلید کی بنیاد پر دو ترتیبوں میں شامل ہونے کے لیے GroupJoin() طریقہ استعمال کر سکتے ہیں اور پھر نتیجہ کو فلیٹ کرنے کے لیے SelectMany() طریقہ استعمال کر سکتے ہیں، یہاں ایک مثال ہے:







سسٹم کا استعمال کرتے ہوئے؛
System.Linq کا استعمال کرتے ہوئے؛

کلاس پروگرام
{
جامد باطل مین ( )
{
var بائیں = نیا [ ] { 1 , 2 , 3 } ;
var حق = نیا [ ] { 2 , 3 , 4 } ;
var نتیجہ = بائیں۔ گروپ جوائن (
ٹھیک ہے
l = > l
r = > ر،
( l، r ) = > نئی { بائیں = l، دائیں = r.DefaultIfEmpty ( ) } )
.بہت سے منتخب کریں۔ (
lr = > lr.Right.منتخب کریں۔ (
r = > نئی { Left = lr.Left، Right = r } ) ) ;
ہر ایک کے لئے ( var آئٹم میں نتیجہ )
{
Console.WriteLine ( '{0} {1}' , آئٹم۔بائیں، آئٹم۔دائیں ) ;
}
}
}



یہ کوڈ بائیں اور دائیں دو صفوں پر لیفٹ آؤٹر جوائن کرتا ہے، اور نتیجہ کو کنسول پر پرنٹ کرتا ہے۔ GroupJoin() طریقہ شمولیت کو انجام دیتا ہے، اور سلیکٹ مینی() طریقہ نتیجہ کو چپٹا کرنے کے لیے استعمال کیا جاتا ہے۔ آخر میں، نتیجہ foreach لوپ اور WriteLine() فنکشن کا استعمال کرتے ہوئے کنسول پر پرنٹ کیا جاتا ہے:







یہاں ایک اور مثال ہے جو متعلقہ ملازمین کے ناموں اور ان کے متعلقہ محکموں کو ظاہر کرکے لیفٹ آؤٹ جوائنز پرفارم کرنے کے استعمال کو ظاہر کرتی ہے۔ ہر ملازم ہر محکمہ کو ایک نمبر تفویض کیا گیا ہے جو پھر متعلقہ محکمے کو متعلقہ ملازم سے ملانے کے لیے استعمال کیا جاتا ہے، اس کے لیے مکمل کوڈ یہ ہے:

سسٹم کا استعمال کرتے ہوئے؛
System.Collections.Generic کا استعمال کرتے ہوئے؛
System.Linq کا استعمال کرتے ہوئے؛

نام کی جگہ YourNamespace
{
کلاس پروگرام
{
جامد باطل مین ( تار [ ] args )
{
فہرست < ملازم کا نام > ملازمین = نئی فہرست < ملازم کا نام >
{
نیا ملازم کا نام { آئی ڈی = 1 ، نام = 'خود' , DepartmentId = 1 } ,
نیا ملازم کا نام { آئی ڈی = 2 ، نام = 'جان' , DepartmentId = 2 } ,
نیا ملازم کا نام { آئی ڈی = 3 ، نام = 'کیون' , DepartmentId = 2 } ,
نیا ملازم کا نام { آئی ڈی = 4 ، نام = 'باب' , DepartmentId = 3 }
} ;

فہرست < شعبہ > محکمے = نئی فہرست < شعبہ >
{
نیا محکمہ { آئی ڈی = 1 ، نام = 'مواد کی تحریر' } ,
نیا محکمہ { آئی ڈی = 2 ، نام = 'مارکیٹنگ' } ,
نیا محکمہ { آئی ڈی = 3 ، نام = 'انجینئرنگ' }
} ;

var استفسار = ملازم کے نام سے میں ملازمین
شمولیت شعبہ میں شعبه جات
ملازم کے نام پر۔DepartmentId ڈپارٹمنٹ کے برابر ہے۔آئی ڈی ڈیپارٹمنٹ گروپ میں
محکمہ سے میں DepartmentGroup.DefaultIfEmpty ( )
منتخب کریں نئی { ملازم کا نام = ملازم کا نام۔ نام، محکمہ کا نام = محکمہ؟ نام ؟؟ 'کوئی نہیں' } ;

ہر ایک کے لئے ( نتیجہ تھا میں استفسار )
{
Console.WriteLine ( $ 'ملازم کا نام: {result.EmployeenameName}، ڈیپارٹمنٹ: {result.DepartmentName}' ) ;
}
}
}

کلاس ملازم کا نام
{
عوامی int Id { حاصل کریں سیٹ ; }
عوامی سٹرنگ کا نام { حاصل کریں سیٹ ; }
پبلک انٹ ڈیپارٹمنٹ آئی ڈی { حاصل کریں سیٹ ; }
}

کلاس ڈیپارٹمنٹ
{
عوامی int Id { حاصل کریں سیٹ ; }
عوامی سٹرنگ کا نام { حاصل کریں سیٹ ; }
}
}



پہلے ایک نمونہ ڈیٹا دیا جاتا ہے جس میں ملازم کا نام اور محکموں کا نام ہوتا ہے اور اس کے بعد ہر ایک کو ایک متعلقہ نمبر دیا جاتا ہے۔ اس کے بعد جوائن کمانڈ کا استعمال کرتے ہوئے جوائن آپریشن کیا جاتا ہے اور اس کے بعد نتیجہ ایک متغیر نامی استفسار میں محفوظ ہوجاتا ہے، اس کے بعد متعلقہ ملازمین کے نام اور محکموں کو پرنٹ کرنے کے لیے for loop کا استعمال کیا جاتا ہے اور کوڈ کی آؤٹ پٹ اس طرح ہوگی۔ :

نتیجہ

لیفٹ آؤٹر جوائن ایس کیو ایل میں ایک عام آپریشن ہے، اور C# میں LINQ کا استعمال کرتے ہوئے بھی آسانی سے انجام دیا جا سکتا ہے۔ GroupJoin() اور SelectMany() طریقوں کا استعمال کرتے ہوئے، آپ ایک مشترکہ کلید کی بنیاد پر دو ترتیبوں پر بائیں بیرونی جوائن انجام دے سکتے ہیں۔ اگرچہ LINQ میں بائیں بیرونی شمولیت کو انجام دینے کے لیے نحو کو ابتدائی افراد کے لیے سمجھنا مشکل ہو سکتا ہے، لیکن یہ ایک طاقتور اور لچکدار زبان ہے جو پیچیدہ سوالات کو آسانی سے انجام دینے کی اجازت دیتی ہے۔