بناء الجملة:
1. إذا كنت ترغب في إنشاء قاموس وفقًا لوظائف محدد المفتاح ووظائف محدد العناصر من مصدر البيانات المحدد ، فقم بتحميل الطريقة التالية بشكل زائد:
حدود:
-
- مصدر : يمكن أن يكون المصدر (قائمة) IEnumerable يتم فيها إنشاء القاموس من هذا المصدر.
- مفتاح محدد : هذه وظيفة تُستخدم للحصول على المفتاح من كل عنصر.
- عنصر محدد: هذه وظيفة تُستخدم للحصول على العنصر.
- مصدر : هذه هي معلمة النوع التي تحدد نوع مصدر البيانات.
- مفتاح TKey: هذه هي معلمة النوع التي تحدد نوع المفتاح.
- تليمنت : هذه هي معلمة النوع التي تحدد نوع العنصر.
2. إذا كنت ترغب في إنشاء قاموس وفقًا لوظيفة محدد المفتاح المحدد من مصدر البيانات المحدد ، قم بتحميل الطريقة التالية بشكل زائد:
حدود:
-
- مصدر : يمكن أن يكون المصدر (قائمة) IEnumerable يتم فيها إنشاء القاموس من هذا المصدر.
- مفتاح محدد : هذه وظيفة تُستخدم للحصول على المفتاح من كل عنصر.
- المصدر: يشير هذا إلى نوع مصدر البيانات.
- 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 فارغًا والمفاتيح مكررة.