تعبيرات C # LINQ Lambda

T Byrat C Linq Lambda



يأخذ تعبير Lambda في C # التعابير / العبارات الشرطية مباشرة كجسم بدون اسم. نحتاج إلى تحديد المعلمات ومن ثم يتم تخصيص التعبيرات لها. أثناء العمل باستخدام استعلام اللغة المتكامل (LINQ) ، قد يكون لديك متطلب تحتاجه لتحويل البيانات الموجودة في مصدر البيانات أو تحويل مصدر بيانات واحد إلى مصدر بيانات آخر. في هذا الدليل ، سنرى كيفية تصفية السجلات من مصدر البيانات عن طريق تحديد تعبير lambda وتحديد السجلات من مصدر البيانات.

بناء الجملة:

  1. تعبير لامدا: (المعلمات) => التعبير
  2. بيان Lambda: {البيان الشرطي 1 البيان 2 ...}

مثال 1:

أنشئ قائمة 'الأسمدة' التي تحتوي على خمسة سلاسل. استخدم تعبير lambda الذي يُرجع جميع السلاسل من القائمة.

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

فصل لامبدا اكسبرسيون مثال {

ثابتة عام فارغ رئيسي ( )
{

// إنشاء قائمة الأسمدة
قائمة الأسمدة = جديد قائمة ( ) ؛
اسمدة . يضيف ( اليوريا ) ؛
اسمدة . يضيف ( 'نتروجين' ) ؛
اسمدة . يضيف ( 'البوتاسيوم' ) ؛
اسمدة . يضيف ( 'ثنائي فوسفات الأمونيوم' ) ؛
اسمدة . يضيف ( 'الفوسفور' ) ؛

// استخدم LambdaExpression لتحديد جميع الأسمدة
كان نتيجة = اسمدة . يختار ( inp1 => inp1 ) ؛
foreach ( كان أنا في نتيجة )
{
وحدة التحكم . اكتب ( أنا ) ؛
}

}
}

انتاج:









توضيح:



1. قم بإنشاء قائمة بنوع السلسلة المسماة 'الأسمدة'. أضف خمس سلاسل إلى هذه القائمة.

2. استخدم تعبير لامدا لاختيار كل الأسمدة. هنا ، يتم استخدام التعبير مع عامل التشغيل 'تحديد'. التعبير inp1 => inp1. بعد ذلك ، نستخدم حلقة 'foreach' لعرض السلاسل التي يتم إرجاعها بواسطة تعبير lambda.





المثال 2:

استخدم تعبير لامدا لاختيار الأسمدة التي تحتوي على 'الفوسفات'.

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

فصل لامبدا اكسبرسيون مثال {

ثابتة عام فارغ رئيسي ( )
{

// إنشاء قائمة الأسمدة
قائمة الأسمدة = جديد قائمة ( ) ؛
اسمدة . يضيف ( اليوريا ) ؛
اسمدة . يضيف ( 'نتروجين' ) ؛
اسمدة . يضيف ( 'أورثو - فوسفات' ) ؛
اسمدة . يضيف ( 'ثنائي فوسفات الأمونيوم' ) ؛
اسمدة . يضيف ( 'الفوسفور' ) ؛

// استخدم LambdaExpression لتحديد الأسمدة التي تحتوي على - 'الفوسفات'
كان نتيجة = اسمدة . أين ( inp1 => inp1 . يتضمن ( 'فوسفات' ) ) ؛
foreach ( كان أنا في نتيجة )
{
وحدة التحكم . اكتب ( أنا ) ؛
}

}
}

انتاج:



هناك نوعان من الخيوط التي تحتوي على 'الفوسفات' فيها.

توضيح:

1. قم بإنشاء قائمة بنوع السلسلة المسماة 'الأسمدة'. أضف خمس سلاسل إلى هذه القائمة.

2. هنا ، يتم استخدام التعبير مع عامل التشغيل 'أين'. التعبير inp1 => inp1. يحتوي على ('فوسفات'). بعد ذلك ، نستخدم حلقة 'foreach' لعرض السلاسل التي يتم إرجاعها بواسطة تعبير lambda.

المثال 3:

لنحصل على قائمة (كمية_الطلب) تحتوي على ثلاثة أوامر. حدد تعبير lambda لإضافة 5 لكل طلب.

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

فصل لامبدا اكسبرسيون مثال {

ثابتة عام فارغ رئيسي ( )
{

// إنشاء قائمة الكميات
قائمة order_quantity = جديد قائمة ( ) ؛
ترتيب_كمية . يضيف ( 5 ) ؛
ترتيب_كمية . يضيف ( 7 ) ؛
ترتيب_كمية . يضيف ( 8 ) ؛

// استخدم LambdaExpression إلى 5 لكل طلب.
كان نتيجة = ترتيب_كمية . يختار ( inp1 => inp1 + 5 ) ؛
foreach ( كان أنا في نتيجة )
{
وحدة التحكم . اكتب ( أنا ) ؛
}

}
}

انتاج:

يتم تحويل القائمة [5،7،8] إلى [10،12،13].

توضيح:

1. قم بإنشاء قائمة الكميات من نوع عدد صحيح.

2. نختار الطلبات أولاً ثم نضيف 5 لكل طلب. لذلك ، يتم استخدام عامل التشغيل 'تحديد'. التعبير inp1 => inp1 + 5.

المثال 4:

قم بإنشاء مصدر بيانات قائمة من نوع الحدث (بثلاث سمات - Event_Name و Event_Status و Event_Budget) وأعد السجلات بميزانية Event_Budget التي تزيد عن 5000.

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

// أنشئ فئة باسم - 'Event_Source' مع 5 أحداث.
عام فصل مصدر_الحدث
{
عام ثابتة فارغ رئيسي ( )
{
// قائمة الأحداث
أحداث IList = جديد قائمة ( ) {
جديد حدث ( ) { اسم الحدث = 'المعسكر الفني' ، Event_Status = 'مخطط' ، Event_Budget = 10000 } و
جديد حدث ( ) { اسم الحدث = 'معسكر التسويق' ، Event_Status = 'مكتمل' ، Event_Budget = 5000 } و
جديد حدث ( ) { اسم الحدث = 'آخر' ، Event_Status = 'مخطط' ، Event_Budget = 1000 } و
جديد حدث ( ) { اسم الحدث = 'سياسة' ، Event_Status = 'مخطط' ، Event_Budget = 13000 } و
جديد حدث ( ) { اسم الحدث = 'تمويل' ، Event_Status = 'مكتمل' ، Event_Budget = 20000 } و
} ؛

// Event_Budget أكبر من 5000.
كان نتيجة = الأحداث . أين ( inp1 => inp1 . Event_Budget > 5000 ) ؛
foreach ( كان أنا في نتيجة ) {
وحدة التحكم . اكتب ( 'اسم: ' + أنا . اسم الحدث + ' حالة: ' + أنا . حالة_الحدث + ' ميزانية: ' + أنا . Event_Budget ) ؛
}
}
}

عام فصل حدث {
عام خيط اسم الحدث { يحصل ؛ تعيين ؛ }
عام خيط حالة_الحدث { يحصل ؛ تعيين ؛ }
عام int Event_Budget { يحصل ؛ تعيين ؛ }
}

انتاج:

توجد ثلاثة سجلات في قائمة 'الأحداث' بميزانية Event_Budget أكبر من 5000.

توضيح:

1. أولاً ، نقوم بإنشاء فئة 'حدث' بثلاث سمات.

2. بعد ذلك ، نقوم بإنشاء قائمة بخمسة أحداث.

3. استخدام inp1 => inp1.Event_Budget> 5000 تعبير lambda ، نختار السجلات التي تحتوي على Event_Budget أكبر من 5000.

المثال 5:

استخدم الكود السابق وقم بتغيير تعبير lambda. قم بإعادة الأحداث مع Event_Name التي تنتهي بـ 'Camp' وبالحالة Event_Status التي هي 'مخطط لها'.

// Lambda Expression - Event_Name ينتهي بـ 'Camp' و Event_Status 'مخطط لها'.
كان نتيجة = الأحداث . أين ( inp1 => inp1 . اسم الحدث . ينتهي بـ ( 'معسكر' ) && inp1 . حالة_الحدث == 'مخطط' ) ؛
foreach ( كان أنا في نتيجة ) {
وحدة التحكم . اكتب ( 'اسم: ' + أنا . اسم الحدث + ' حالة: ' + أنا . حالة_الحدث + ' ميزانية: ' + أنا . Event_Budget ) ؛
}

انتاج:

لا يوجد سوى سجل واحد يفي بكلا الشرطين.

توضيح:

هنا ، نحدد شرطين في تعبير لامدا. يتم استخدام عامل التشغيل && (و) لجعل الشرطين على أنهما صحيحان. يستخدم الشرط الأول طريقة EndsWith () للتحقق مما إذا كانت السلسلة النصية تنتهي بالسلسلة المحددة. يستخدم الشرط الثاني عامل التشغيل 'Comparison' (==) للتحقق مما إذا كانت كلتا القيمتين متساويتين أم لا.

خاتمة

في C # ، يأخذ تعبير lambda التعبيرات / العبارات الشرطية كجسم بدون اسم. نحن بحاجة إلى تحديد المعلمات. ثم يتم تعيين التعبيرات لها. بشكل أساسي ، تُستخدم هذه لتصفية السجلات من مصدر البيانات المحدد ، وتحويل العناصر ، وتحديد العناصر من مصدر / تسلسل البيانات. ناقشنا في هذا الدليل الأمثلة الخمسة المختلفة التي تحدد العناصر وتصفيتها وتحولها باستخدام تعبير lambda.