02-08-20, 01:22 AM
الاستخدامات
في الواقع يمكنك استخدام تعابير لمبدا في اي مكان اينما اردت ولكن هناك استخدامات عملية لاغنى لاي مبرمج C# عنها مثل :
1. method based linq queries الاستعلامات المبنيه على طرق Linq
لايكاد يخلو اي برنامج لديك من استخدام قاعدة بيانات او List او اي كائن يدعم IEnumerable
تتطلب اغلب اجرائات الاستعلام على الكائنات من النوع IEnumerable مدخل تعبير لمبدا تخبر Linq ماذا تريد ان تفعل تحديدا
بفرض ان لدينا List من نوع string كما يلي :
اذا اردنا ان نحدد العناصر الاكبر من 20 في القائمة ، يمكننا فعل ذلك عن طريق الدالة Where التي تقبل تعبير لمدا يعيد قيمة من نوع bool تحدد الشرط الذي يتم على اسايه اختيار العنصر او لا :
اذا اردنا تكوين list اخرى قيمة العنصر فيها ضعف قيمته في ال list الحالية ، يمكننا فعل ذلك عن طريق الدالة Select التي تقبل مدخل تعبير لمدا يمثل العلاقة بين العنصر في القائمة الحالية والعنصر في القائمة المراد انشائها :
مثال اخر اذا كان لدينا list من نوع string :
اذا اردنا ان نحسب عدد الحروف في هذا ال list يمكننا ذلك عن طريق الدالة sum التي تقبل مدخل تعبير لمدا يمثل العلاقة بين العنصر والمطلوب حساب مجموعه :
توجد طريقة اخري لاستخدام دالة Select حيث تستخدم تعبير لمدا له مدخلان الاول يمثل العنصر المراد تحويله والثاني يمثل ترتيب العنصر :
الكود التالي يقوم بعمل list اخرى تحوي العناصر الحالية معنونة بترتيبها :
في الواقع يمكنك استخدام تعابير لمبدا في اي مكان اينما اردت ولكن هناك استخدامات عملية لاغنى لاي مبرمج C# عنها مثل :
1. method based linq queries الاستعلامات المبنيه على طرق Linq
لايكاد يخلو اي برنامج لديك من استخدام قاعدة بيانات او List او اي كائن يدعم IEnumerable
تتطلب اغلب اجرائات الاستعلام على الكائنات من النوع IEnumerable مدخل تعبير لمبدا تخبر Linq ماذا تريد ان تفعل تحديدا
بفرض ان لدينا List من نوع string كما يلي :
كود :
var NumList = new List<int> { 11, 20, 7, 9, 36, 99 };اذا اردنا ان نحدد العناصر الاكبر من 20 في القائمة ، يمكننا فعل ذلك عن طريق الدالة Where التي تقبل تعبير لمدا يعيد قيمة من نوع bool تحدد الشرط الذي يتم على اسايه اختيار العنصر او لا :
كود :
var NumsMoreThan20 = NumList.Where(x => x > 20);
foreach (var i in NumsMoreThan20)
textBox1.Text += i.ToString() + ' '; // 36 99اذا اردنا تكوين list اخرى قيمة العنصر فيها ضعف قيمته في ال list الحالية ، يمكننا فعل ذلك عن طريق الدالة Select التي تقبل مدخل تعبير لمدا يمثل العلاقة بين العنصر في القائمة الحالية والعنصر في القائمة المراد انشائها :
كود :
var NumDublicated = NumList.Select(x => x * 2);
foreach (var i in NumDublicated)
textBox1.Text += i.ToString() + ' '; // 22 40 14 18 72 198 مثال اخر اذا كان لدينا list من نوع string :
كود :
var StringList = new List<string> { "mohammed", "saad", "omar", "khaled" };اذا اردنا ان نحسب عدد الحروف في هذا ال list يمكننا ذلك عن طريق الدالة sum التي تقبل مدخل تعبير لمدا يمثل العلاقة بين العنصر والمطلوب حساب مجموعه :
كود :
int ListCharCount = StringList.Sum(x => x.Length);
textBox1.Text = ListCharCount.ToString(); //22توجد طريقة اخري لاستخدام دالة Select حيث تستخدم تعبير لمدا له مدخلان الاول يمثل العنصر المراد تحويله والثاني يمثل ترتيب العنصر :
الكود التالي يقوم بعمل list اخرى تحوي العناصر الحالية معنونة بترتيبها :
كود :
var StringListWithNum = StringList.Select((x, index) => $"{index}.{x}");
foreach (var i in StringListWithNum)
textBox1.Text += i.ToString() + ' '; // 0.mohammed 1.saad 2.omar 3.khaled يتبع ان شاء الله

