تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[مقال] Lambda expressions تعابير لمدا من وجهة نظر عملية
#2
الاستخدامات

في الواقع يمكنك استخدام تعابير لمبدا في اي مكان اينما اردت ولكن هناك استخدامات عملية لاغنى لاي مبرمج 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 

يتبع ان شاء الله
الرد }}}


الردود في هذا الموضوع
RE: Lambda expressions تعابير لمدا من وجهة نظر عملية - بواسطة Anas Mahmoud - 02-08-20, 01:22 AM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  Statements and Expressions Sajad 0 2,139 24-08-17, 02:20 PM
آخر رد: Sajad
Lightbulb طرق إجراء عملية التبديل بين حقلين (Swap Two Variables) عبد الكريم كنعان 2 3,022 31-03-16, 03:40 AM
آخر رد: myalsailamy

التنقل السريع :


يقوم بقرائة الموضوع: