C# LINQ کو ڈکشنری میں تبدیل کریں۔

C Linq Kw Kshnry My Tbdyl Kry



C# LINQ میں، سے ایک لغت بنانا System.Collections.Generic.IEnumerable ToDictionary() طریقہ استعمال کرکے ممکن ہے۔ یہ طریقہ دیے گئے سے کے ساتھ ایک لغت بناتا ہے۔ دی System.ArgumentNullException اگر ڈیٹا سورس، کلیدی سلیکٹر، یا عنصر سلیکٹر کالعدم ہو تو پھینک دیا جاتا ہے۔ اس کے علاوہ، اگر keySelector دو عناصر کے لیے ڈپلیکیٹ کیز تیار کرتا ہے، System.ArgumentException پھینک دیا جاتا ہے. اس گائیڈ میں، ہم اس بات پر تبادلہ خیال کریں گے کہ فہرست کے ڈیٹا سورس سے دو طریقوں کو اوور لوڈ کرکے لغت کیسے بنائی جائے۔

نحو:

1. اگر آپ دیے گئے ڈیٹا سورس سے مخصوص کلیدی سلیکٹر اور ایلیمنٹ سلیکٹر کے افعال کے مطابق لغت بنانا چاہتے ہیں تو درج ذیل طریقہ کو اوورلوڈ کریں:









پیرامیٹرز:



    1. ذریعہ : ماخذ ایک IEnumerable (فہرست) ہو سکتا ہے جس میں لغت اس ماخذ سے بنائی گئی ہے۔
    2. کی سلیکٹر : یہ ایک فنکشن ہے جو ہر عنصر سے کلید حاصل کرنے کے لیے استعمال ہوتا ہے۔
    3. عنصر سلیکٹر: یہ ایک فنکشن ہے جو عنصر کو حاصل کرنے کے لیے استعمال ہوتا ہے۔
    4. ماخذ : یہ قسم کا پیرامیٹر ہے جو ڈیٹا سورس کی قسم کی وضاحت کرتا ہے۔
    5. TKey: یہ قسم کا پیرامیٹر ہے جو کلید کی قسم کی وضاحت کرتا ہے۔
    6. ٹیلیمنٹ : یہ قسم کا پیرامیٹر ہے جو عنصر کی قسم کی وضاحت کرتا ہے۔

2. اگر آپ دیے گئے ڈیٹا سورس سے مخصوص کلیدی سلیکٹر فنکشن کے مطابق لغت بنانا چاہتے ہیں، تو درج ذیل طریقہ کو اوورلوڈ کریں:





پیرامیٹرز:



    1. ذریعہ : ماخذ ایک IEnumerable (فہرست) ہو سکتا ہے جس میں لغت اس ماخذ سے بنائی گئی ہے۔
    2. کی سلیکٹر : یہ ایک فنکشن ہے جو ہر عنصر سے کلید حاصل کرنے کے لیے استعمال ہوتا ہے۔
    3. ماخذ: اس سے مراد ڈیٹا سورس کی قسم ہے۔
    4. TKey : یہ کلید کی قسم کی وضاحت کرتا ہے۔

مثال 1: مخصوص کلیدی سلیکٹر اور عنصر سلیکٹر فنکشن

'اکاؤنٹ' قسم کے ساتھ ایک فہرست بنائیں جس میں پانچ ریکارڈ کے ساتھ چار صفات (Acc_ID، Acc_Name، صنعت، محصول) ہوں۔

1. پچھلی فہرست سے ایک لغت بنائیں جس کی کلید Acc_ID اور قدر Acc_Name ہے۔
2. پچھلی فہرست سے ایک لغت بنائیں جس کی کلید Acc_Name اور ویلیو بطور ریونیو ہو۔

استعمال کرتے ہوئے سسٹم ;
استعمال کرتے ہوئے سسٹم۔لنق ;
استعمال کرتے ہوئے سسٹم۔کلیکشنز۔جنرک ;

کلاس اکاؤنٹ کی معلومات
{
عوام جامد باطل مرکزی ( )
{
// قسم کی فہرست بنائیں - اکاؤنٹ۔
فہرست کی تفصیلات = نئی فہرست ( ) ;
// فہرست میں 5 ریکارڈ شامل کریں۔
تفصیلات . شامل کریں۔ ( نئی کھاتہ { Acc_ID = 1 , Acc_Name = 'لینکس' ، صنعت = 'تعلیم' ،آمدنی = 2500 } ) ;
تفصیلات . شامل کریں۔ ( نئی کھاتہ { Acc_ID = 2 , Acc_Name = 'ازگر' ، صنعت = 'بوٹ کیمپ' ،آمدنی = 10000 } ) ;
تفصیلات . شامل کریں۔ ( نئی کھاتہ { Acc_ID = 3 , Acc_Name = 'جاوا' ، صنعت = 'تعلیم' ،آمدنی = 500 } ) ;
تفصیلات . شامل کریں۔ ( نئی کھاتہ { Acc_ID = 4 , Acc_Name = '.NET' ، صنعت = 'تربیت' ،آمدنی = 2080 } ) ;
تفصیلات . شامل کریں۔ ( نئی کھاتہ { Acc_ID = 5 , Acc_Name = 'اوریکل' ، صنعت = 'نوکری' ،آمدنی = 2090 } ) ;

// اوپر کی فہرست سے ایک لغت بنائیں جس میں Acc_ID کلید اور Acc_Name کے بطور قدر
تسلی . رائٹ لائن ( ' ---- Acc_ID کے طور پر کلید اور Acc_Name کے طور پر قدر -----' ) ;
ڈکشنری اکاؤنٹس_ڈیکٹ 1 = تفصیلات . ToDictionary ( جے => جے . Acc_ID ، جے => جے . Acc_Name ) ;

ہر ایک کے لئے ( KeyValuePair i میں accounts_dict1 )
{
تسلی . رائٹ لائن ( 'اکاؤنٹ کی شناخت :' + میں . چابی + ' کھاتے کا نام :' + میں . قدر ) ;
}

// اوپر کی فہرست سے ایک لغت بنائیں جس میں کلید بطور Acc_Name اور قدر بطور محصول
تسلی . رائٹ لائن ( ' ---- کلید بطور Acc_Name اور قدر بطور محصول -----' ) ;
ڈکشنری اکاؤنٹس_ڈکٹ 2 = تفصیلات . ToDictionary ( l => l . Acc_Name ,l => l . آمدنی ) ;

ہر ایک کے لئے ( KeyValuePair k میں accounts_dict2 )
{
تسلی . رائٹ لائن ( 'کھاتے کا نام :' + ک . چابی + 'اکاؤنٹ ریوینیو:' + ک . قدر ) ;
}

}
}

// نام کی کلاس بنائیں - چار صفات کے ساتھ اکاؤنٹ
عوام کلاس کھاتہ
{
عوام int Acc_ID { حاصل کریں ; سیٹ ; }
عوام تار Acc_Name { حاصل کریں ; سیٹ ; }
عوام تار صنعت { حاصل کریں ; سیٹ ; }
عوام int آمدنی { حاصل کریں ; سیٹ ; }
}

آؤٹ پٹ:

وضاحت:

1. چار صفات کے ساتھ 'اکاؤنٹ' کے نام سے ایک کلاس بنائیں۔

2. مین کلاس میں، 'اکاؤنٹ' قسم کی فہرست بنائیں اور اس میں پانچ ریکارڈ داخل کریں۔

3. پچھلی فہرست سے Acc_ID کلید اور Acc_Name کی قدر کے ساتھ ایک لغت بنائیں۔ یہاں، ہم TKey کو بطور int اور TElement کو سٹرنگ کے طور پر بتاتے ہیں۔ ToDictionary() طریقہ کے اندر، ہم keySelector میں Acc_ID اور elementSelector میں Acc_Name پاس کرتے ہیں۔ آخر میں، ہم لغت کو اعادہ کرنے کے لیے 'فوریچ' لوپ کا استعمال کرتے ہیں اور کلید اور قدر کی خصوصیات کا استعمال کرتے ہوئے کلیدیں اور اقدار واپس کرتے ہیں۔

4. پچھلی فہرست سے ایک لغت بنائیں جس کی کلید Acc_Name اور قدر بطور محصول ہو۔ یہاں، ہم TKey کو بطور سٹرنگ اور ٹیلیمنٹ کو int کے طور پر بیان کرتے ہیں۔ ToDictionary() طریقہ کے اندر، ہم keySelector میں Acc_Name اور elementSelector میں Revenue پاس کرتے ہیں۔ آخر میں، ہم لغت کو اعادہ کرنے کے لیے 'فوریچ' لوپ کا استعمال کرتے ہیں اور کلید اور قدر کی خصوصیات کا استعمال کرتے ہوئے کلیدیں اور اقدار واپس کرتے ہیں۔

مثال 2: مخصوص کلیدی سلیکٹر

پچھلا کوڈ استعمال کریں اور پچھلی فہرست سے ایک لغت بنائیں جس کی کلید Acc_ID ہے۔

استعمال کرتے ہوئے سسٹم ;
استعمال کرتے ہوئے سسٹم۔لنق ;
استعمال کرتے ہوئے سسٹم۔کلیکشنز۔جنرک ;

کلاس اکاؤنٹ کی معلومات
{
عوام جامد باطل مرکزی ( )
{
// قسم کی فہرست بنائیں - اکاؤنٹ۔
فہرست کی تفصیلات = نئی فہرست ( ) ;
// فہرست میں 5 ریکارڈ شامل کریں۔
تفصیلات . شامل کریں۔ ( نئی کھاتہ { Acc_ID = 1 , Acc_Name = 'لینکس' ، صنعت = 'تعلیم' ،آمدنی = 2500 } ) ;
تفصیلات . شامل کریں۔ ( نئی کھاتہ { Acc_ID = 2 , Acc_Name = 'ازگر' ، صنعت = 'بوٹ کیمپ' ،آمدنی = 10000 } ) ;
تفصیلات . شامل کریں۔ ( نئی کھاتہ { Acc_ID = 3 , Acc_Name = 'جاوا' ، صنعت = 'تعلیم' ،آمدنی = 500 } ) ;
تفصیلات . شامل کریں۔ ( نئی کھاتہ { Acc_ID = 4 , Acc_Name = '.NET' ، صنعت = 'تربیت' ،آمدنی = 2080 } ) ;
تفصیلات . شامل کریں۔ ( نئی کھاتہ { Acc_ID = 5 , Acc_Name = 'اوریکل' ، صنعت = 'نوکری' ،آمدنی = 2090 } ) ;

// Acc_ID کے بطور کلید کے ساتھ اوپر کی فہرست سے ایک ڈکشنری بنائیں۔
ڈکشنری اکاؤنٹس_ڈکٹ = تفصیلات . ToDictionary ( جے => جے . Acc_ID ) ;
ہر ایک کے لئے ( KeyValuePair i میں accounts_dict )
{
تسلی . رائٹ لائن ( 'چابی:' + میں . چابی + '-->  اکاؤنٹ کا نام :' + میں . قدر . Acc_Name
+ 'اکاؤنٹ انڈسٹری:' + میں . قدر . صنعت
+ 'اکاؤنٹ ریوینیو:' + میں . قدر . آمدنی ) ;
}

}
}

// نام کی کلاس بنائیں - چار صفات کے ساتھ اکاؤنٹ
عوام کلاس کھاتہ
{
عوام int Acc_ID { حاصل کریں ; سیٹ ; }
عوام تار Acc_Name { حاصل کریں ; سیٹ ; }
عوام تار صنعت { حاصل کریں ; سیٹ ; }
عوام int آمدنی { حاصل کریں ; سیٹ ; }
}

آؤٹ پٹ:

وضاحت:

یہاں، ہم Acc_ID کلید کے ساتھ ایک لغت بناتے ہیں۔ یہ لغت میں ہر ریکارڈ کی کلید کے طور پر کام کرتا ہے جسے ہم نے فہرست سے بنایا ہے۔ اس کے بعد، ہم کلید اور قدر کی خصوصیات کا استعمال کرتے ہوئے کلیدیں اور اقدار (صفات کے ساتھ) حاصل کرنے کے لیے 'فوریچ' لوپ کا استعمال کرتے ہیں۔

مثال 3: ڈپلیکیٹ کیز – ArgumentException

دو ریکارڈ کے ساتھ ایک فہرست بنائیں اور Acc_ID بطور کلید کے ساتھ لغت میں تبدیل کرنے کی کوشش کریں۔

استعمال کرتے ہوئے سسٹم ;
استعمال کرتے ہوئے سسٹم۔لنق ;
استعمال کرتے ہوئے سسٹم۔کلیکشنز۔جنرک ;

کلاس اکاؤنٹ کی معلومات
{
عوام جامد باطل مرکزی ( )
{
// قسم کی فہرست بنائیں - اکاؤنٹ۔
فہرست کی تفصیلات = نئی فہرست ( ) ;
// فہرست میں 2 ریکارڈز شامل کریں۔
تفصیلات . شامل کریں۔ ( نئی کھاتہ { Acc_ID = 1 , Acc_Name = 'لینکس' ، صنعت = 'تعلیم' ،آمدنی = 2500 } ) ;
تفصیلات . شامل کریں۔ ( نئی کھاتہ { Acc_ID = 1 , Acc_Name = 'ازگر' ، صنعت = 'بوٹ کیمپ' ،آمدنی = 10000 } ) ;

// Acc_ID کے بطور کلید کے ساتھ اوپر کی فہرست سے ایک ڈکشنری بنانے کی کوشش کریں۔
ڈکشنری اکاؤنٹس_ڈکٹ = تفصیلات . ToDictionary ( جے => جے . Acc_ID ) ;

}
}

// نام کی کلاس بنائیں - چار صفات کے ساتھ اکاؤنٹ
عوام کلاس کھاتہ
{
عوام int Acc_ID { حاصل کریں ; سیٹ ; }
عوام تار Acc_Name { حاصل کریں ; سیٹ ; }
عوام تار صنعت { حاصل کریں ; سیٹ ; }
عوام int آمدنی { حاصل کریں ; سیٹ ; }
}

رعایت:

ایک غیر ہینڈل استثناء جو کہ System.ArgumentException ہے اٹھایا گیا ہے کیونکہ Acc_ID دونوں میں کلید ڈپلیکیٹ (1) ہے۔

مثال 4: Null Source - ArgumentNullException

'اکاؤنٹ' کی قسم کے ساتھ ایک فہرست بنائیں اور اسے کالعدم قرار دیں۔ Acc_ID کی کلید کے ساتھ پچھلی فہرست سے ایک لغت بنانے کی کوشش کریں۔

استعمال کرتے ہوئے سسٹم ;
استعمال کرتے ہوئے سسٹم۔لنق ;
استعمال کرتے ہوئے سسٹم۔کلیکشنز۔جنرک ;

کلاس اکاؤنٹ کی معلومات
{
عوام جامد باطل مرکزی ( )
{
// قسم کی فہرست بنائیں - اکاؤنٹ اور اسے null تفویض کریں۔
فہرست کی تفصیلات = خالی ;

// Acc_ID کے بطور کلید کے ساتھ اوپر کی فہرست سے ایک ڈکشنری بنانے کی کوشش کریں۔
ڈکشنری اکاؤنٹس_ڈکٹ = تفصیلات . ToDictionary ( جے => جے . Acc_ID ) ;

}
}

// نام کی کلاس بنائیں - چار صفات کے ساتھ اکاؤنٹ
عوام کلاس کھاتہ
{
عوام int Acc_ID { حاصل کریں ; سیٹ ; }
عوام تار Acc_Name { حاصل کریں ; سیٹ ; }
عوام تار صنعت { حاصل کریں ; سیٹ ; }
عوام int آمدنی { حاصل کریں ; سیٹ ; }
}

رعایت:

ایک غیر ہینڈل استثناء جو کہ System.ArgumentNullException ہے اس لیے اٹھایا گیا ہے کیونکہ فہرست کالعدم ہے۔

نتیجہ

ہم نے سیکھا کہ C# LINQ میں ToDictionary() طریقہ استعمال کرتے ہوئے IEnumerable (یہاں، یہ فہرست ہے) سے لغت کیسے بنائی جاتی ہے۔ اس طریقہ کو دو طریقوں سے اوورلوڈ کیا جا سکتا ہے۔ ہم نے مثالوں کے ساتھ دونوں طریقوں پر تبادلہ خیال کیا۔ اس کے علاوہ، ہم نے دو استثنائی صورتوں کو سیکھا جو اس طریقہ سے اٹھائے جاتے ہیں جب ڈیٹا سورس/keySelector/ elementSelector null ہو اور کیز ڈپلیکیٹ ہوں۔