تحويل C # LINQ إلى قاموس

Thwyl C Linq Aly Qamws



في C # LINQ ، يتم إنشاء قاموس من System.Collections.Generic.Inumerable ممكن باستخدام طريقة ToDictionary (). تنشئ هذه الطريقة قاموسًا باستخدام من المعطى . ال System.ArgumentNullException يتم طرحه إذا كان مصدر البيانات أو keySelector أو elementSelector فارغًا. أيضًا ، إذا كان 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 والقيمة كإيرادات.

استخدام نظام ؛
استخدام النظام ؛
استخدام System.Collections.Generic ؛

فصل معلومات الحساب
{
عام ثابتة فارغ رئيسي ( )
{
// إنشاء قائمة من النوع - الحساب.
تفاصيل القائمة = جديد قائمة ( ) ؛
// أضف 5 سجلات إلى القائمة.
تفاصيل . يضيف ( جديد حساب { معرف_الحساب = 1 ، Acc_Name = 'Linux' ، صناعة = 'تعليم' ،ربح = 2500 } ) ؛
تفاصيل . يضيف ( جديد حساب { معرف_الحساب = 2 ، Acc_Name = 'بايثون' ، صناعة = 'مخيم التدريب' ،ربح = 10000 } ) ؛
تفاصيل . يضيف ( جديد حساب { معرف_الحساب = 3 ، Acc_Name = 'جافا' ، صناعة = 'تعليم' ،ربح = 500 } ) ؛
تفاصيل . يضيف ( جديد حساب { معرف_الحساب = 4 ، Acc_Name = '.شبكة' ، صناعة = 'تمرين' ،ربح = 2080 } ) ؛
تفاصيل . يضيف ( جديد حساب { معرف_الحساب = 5 ، Acc_Name = 'وحي' ، صناعة = 'وظيفة' ،ربح = 2090 } ) ؛

// قم بإنشاء قاموس من القائمة أعلاه بالمفتاح كـ Acc_ID والقيمة كـ Acc_Name
وحدة التحكم . اكتب ( '---- المفتاح كـ Acc_ID والقيمة كـ Acc_Name ----' ) ؛
حسابات القاموس 1 = تفاصيل . قاموس ( ي => ي . معرف_الحساب ، ي => ي . Acc_Name ) ؛

foreach ( KeyValuePair أنا في account_dict1 )
{
وحدة التحكم . اكتب ( 'معرف الحساب:' + أنا . مفتاح + ' إسم الحساب :' + أنا . قيمة ) ؛
}

// قم بإنشاء قاموس من القائمة أعلاه باستخدام المفتاح كـ Acc_Name والقيمة كإيرادات
وحدة التحكم . اكتب ( '---- المفتاح باسم Acc_Name والقيمة كإيرادات ----' ) ؛
حسابات القاموس 2 = تفاصيل . قاموس ( ل => ل . Acc_Name ، ل => ل . ربح ) ؛

foreach ( KeyValuePair ك في account_dict2 )
{
وحدة التحكم . اكتب ( 'إسم الحساب :' + ك . مفتاح + 'إيرادات الحساب:' + ك . قيمة ) ؛
}

}
}

// إنشاء فئة مسماة - حساب بأربع سمات
عام فصل حساب
{
عام int معرف_الحساب { يحصل ؛ تعيين ؛ }
عام خيط Acc_Name { يحصل ؛ تعيين ؛ }
عام خيط صناعة { يحصل ؛ تعيين ؛ }
عام int ربح { يحصل ؛ تعيين ؛ }
}

انتاج:

توضيح:

1. أنشئ فئة باسم 'الحساب' بأربع سمات.

2. في الفصل الرئيسي ، أنشئ قائمة بنوع 'الحساب' وأدخل خمسة سجلات فيها.

3. قم بإنشاء قاموس من القائمة السابقة بالمفتاح كـ Acc_ID والقيمة كـ Acc_Name. هنا ، نحدد TKey كـ int و TElement كسلسلة. داخل طريقة ToDictionary () ، نقوم بتمرير Acc_ID في keySelector و Acc_Name في elementSelector. أخيرًا ، نستخدم حلقة 'foreach' لتكرار القاموس وإرجاع المفاتيح والقيم باستخدام خصائص المفتاح والقيمة.

4. قم بإنشاء قاموس من القائمة السابقة باستخدام المفتاح Acc_Name والقيمة مثل Revenue. هنا ، نحدد TKey كسلسلة و TElement على أنه int. داخل طريقة ToDictionary () ، نقوم بتمرير Acc_Name في keySelector والإيرادات في elementSelector. أخيرًا ، نستخدم حلقة 'foreach' لتكرار القاموس وإرجاع المفاتيح والقيم باستخدام خصائص المفتاح والقيمة.

مثال 2: محدد المفتاح المحدد

استخدم الكود السابق وأنشئ قاموسًا من القائمة السابقة بالمفتاح مثل Acc_ID.

استخدام نظام ؛
استخدام النظام ؛
استخدام System.Collections.Generic ؛

فصل معلومات الحساب
{
عام ثابتة فارغ رئيسي ( )
{
// إنشاء قائمة من النوع - الحساب.
تفاصيل القائمة = جديد قائمة ( ) ؛
// أضف 5 سجلات إلى القائمة.
تفاصيل . يضيف ( جديد حساب { معرف_الحساب = 1 ، Acc_Name = 'Linux' ، صناعة = 'تعليم' ،ربح = 2500 } ) ؛
تفاصيل . يضيف ( جديد حساب { معرف_الحساب = 2 ، Acc_Name = 'بايثون' ، صناعة = 'مخيم التدريب' ،ربح = 10000 } ) ؛
تفاصيل . يضيف ( جديد حساب { معرف_الحساب = 3 ، Acc_Name = 'جافا' ، صناعة = 'تعليم' ،ربح = 500 } ) ؛
تفاصيل . يضيف ( جديد حساب { معرف_الحساب = 4 ، Acc_Name = '.شبكة' ، صناعة = 'تمرين' ،ربح = 2080 } ) ؛
تفاصيل . يضيف ( جديد حساب { معرف_الحساب = 5 ، Acc_Name = 'وحي' ، صناعة = 'وظيفة' ،ربح = 2090 } ) ؛

// قم بإنشاء قاموس من القائمة أعلاه باستخدام Key كـ Acc_ID.
حسابات القاموس = تفاصيل . قاموس ( ي => ي . معرف_الحساب ) ؛
foreach ( KeyValuePair أنا في account_dict )
{
وحدة التحكم . اكتب ( 'مفتاح:' + أنا . مفتاح + '-> اسم الحساب:' + أنا . قيمة . Acc_Name
+ 'صناعة الحساب:' + أنا . قيمة . صناعة
+ 'إيرادات الحساب:' + أنا . قيمة . ربح ) ؛
}

}
}

// إنشاء فئة مسماة - حساب بأربع سمات
عام فصل حساب
{
عام int معرف_الحساب { يحصل ؛ تعيين ؛ }
عام خيط Acc_Name { يحصل ؛ تعيين ؛ }
عام خيط صناعة { يحصل ؛ تعيين ؛ }
عام int ربح { يحصل ؛ تعيين ؛ }
}

انتاج:

توضيح:

هنا ، نقوم بإنشاء قاموس بالمفتاح كـ Acc_ID. يعمل هذا كمفتاح لكل سجل في القاموس أنشأناه من القائمة. بعد ذلك ، نستخدم حلقة 'foreach' للحصول على المفاتيح والقيم (مع السمات) باستخدام خصائص المفتاح والقيمة.

مثال 3: تكرار المفاتيح - ArgumentException

قم بإنشاء قائمة بسجلين وحاول تحويلها إلى قاموس باستخدام Acc_ID كمفتاح.

استخدام نظام ؛
استخدام النظام ؛
استخدام System.Collections.Generic ؛

فصل معلومات الحساب
{
عام ثابتة فارغ رئيسي ( )
{
// إنشاء قائمة من النوع - الحساب.
تفاصيل القائمة = جديد قائمة ( ) ؛
// أضف سجلين إلى القائمة.
تفاصيل . يضيف ( جديد حساب { معرف_الحساب = 1 ، Acc_Name = 'Linux' ، صناعة = 'تعليم' ،ربح = 2500 } ) ؛
تفاصيل . يضيف ( جديد حساب { معرف_الحساب = 1 ، Acc_Name = 'بايثون' ، صناعة = 'مخيم التدريب' ،ربح = 10000 } ) ؛

// حاول إنشاء قاموس من القائمة أعلاه باستخدام مفتاح Acc_ID.
حسابات القاموس = تفاصيل . قاموس ( ي => ي . معرف_الحساب ) ؛

}
}

// إنشاء فئة مسماة - حساب بأربع سمات
عام فصل حساب
{
عام int معرف_الحساب { يحصل ؛ تعيين ؛ }
عام خيط Acc_Name { يحصل ؛ تعيين ؛ }
عام خيط صناعة { يحصل ؛ تعيين ؛ }
عام int ربح { يحصل ؛ تعيين ؛ }
}

استثناء:

يظهر استثناء غير معالج وهو System.ArgumentException لأن المفتاح مكرر (1) في كل من معرفات Acc_ID.

مثال 4: مصدر فارغ - ArgumentNullException

قم بإنشاء قائمة من نوع 'الحساب' وتعيين قيمة خالية لها. حاول إنشاء قاموس من القائمة السابقة باستخدام المفتاح Acc_ID.

استخدام نظام ؛
استخدام النظام ؛
استخدام System.Collections.G عام ؛

فصل معلومات الحساب
{
عام ثابتة فارغ رئيسي ( )
{
// إنشاء قائمة من النوع - حساب وإسناد قيمة فارغة إليه.
تفاصيل القائمة = باطل ؛

// حاول إنشاء قاموس من القائمة أعلاه باستخدام مفتاح مثل Acc_ID.
حسابات القاموس = تفاصيل . قاموس ( ي => ي . معرف_الحساب ) ؛

}
}

// إنشاء فئة مسماة - حساب بأربع سمات
عام فصل حساب
{
عام int معرف_الحساب { يحصل ؛ تعيين ؛ }
عام خيط Acc_Name { يحصل ؛ تعيين ؛ }
عام خيط صناعة { يحصل ؛ تعيين ؛ }
عام int ربح { يحصل ؛ تعيين ؛ }
}

استثناء:

يظهر استثناء غير معالج وهو System.ArgumentNullException لأن القائمة خالية.

خاتمة

لقد تعلمنا كيفية إنشاء قاموس من IEnumerable (هنا ، هو قائمة) باستخدام طريقة ToDictionary () في C # LINQ. يمكن زيادة تحميل هذه الطريقة بطريقتين. ناقشنا كلا الطريقتين مع الأمثلة. أيضًا ، تعلمنا حالتين الاستثناء اللتين أثيرتهما هذه الطريقة عندما يكون مصدر البيانات / keySelector / elementSelector فارغًا والمفاتيح مكررة.