Sum , Min , Max , Average , and Count In LINQ
في هذا الجزء من الـ LINQ سوف اتحدث عن بعد الدوال السهلة والمفيدة في الـ LINQ .
طبعا بعد النبذة الي طرحتها في موضوعي السابق ومن خلال حديثي , لقد تحدث عن خاصة بسيطة وهي الـ Count وكان حديثي بشكل بسيط , اليوم في هذا الموضوع سوف اتحدث عن 5 دوال يعرفون بأسم Aggregate Operators .
ماهو الهدف من هذه الدوال ؟
بصراحة الهدف بسيط لأنه يعرف من اسم الدالة على سبيل المثال Sum تعني الجمع وهذه هي الوظيفة التي تعمل بها والبقية مثل الطريقة ..
ملاحظة: الدوال دائما ترجع القيم من نوع int بمعنى دائما يكون عددي
فـ Sum , Min , Max , Average تتعامل مع قيم ارقام
ما الفائدة من هذه الملاحظة: طبعا في الامثلة البسيطة انا اتعامل مع مصفوفة محتويتها ارقام , لكن لنفرض انك تريد التعامل مع قاعدة بيانات لن تستطيع جمع حقل مثلا Names لان نوع البيانات يختلف .
اذا دعونا نأخد امثلة بسيطة توضح عمل الدوال
Sum
الوظيفة: دالة تستخدم للجمع .
int[] Numbers = {1,2,3,4,5,6};
var Sum = (from r in Numbers
select r).Sum();
Label1.Text ="The Sum Result is: "+ Sum.ToString();النتيجة: 21
لو بنجمع الاعداد الموجودة في المصفوفة راح نحصل على نفس النتيجة
---------------
Min
الوظيفة: ايجاد اصغر عنصر في المصفوفة.
int[] Numbers = {1,2,3,4,5,6};
var Min = (from r in Numbers
select r).Min();
Label1.Text ="The Min Result is: "+ Min.ToString();النتيجة: 1
لان هو اصغر رقم في المصفوفة.
---------------
Max
الوظيفة: ايجاد اكبر عنصر في المصفوفة
int[] Numbers = {1,2,3,4,5,6};
var Max = (from r in Numbers
select r).Max();
Label1.Text ="The Max Result is: "+ Max.ToString();النتيجة:6
لا تختلف عن السابقة فقط تكون العملية معكوسة حيث بنحصل على اكبر عدد في المصفوفة.
---------------
Average
الوظيفة: إيجاد المعدل للأرقام الموجدة في المصفوفة
int[] Numbers = {1,2,3,4,5,6};
var Average = (from r in Numbers
select r).Average();
Label1.Text ="The Average Result is: "+ Average.ToString();النتيجة: 3.5 لماذا !!
طبعا طريقة عمل هذه الدالة مخلفة قليلا حيث أنها تجمع عدد العناصر وبعدها تعمل قسمة على عدد العناصر نفسها
في مثالنا لو جمعنا الأعداد 1 +2+ 3+ 4+ 5+ 6 راح يكون الناتج 21 وعند القسمة نقسم على عددها بمعني سوف يتم القسمة على 6 لان يوجد لدينا 6 أعداد فقط
---------------
Count
الوظيفة: عد العناصر الموجودة في المصفوفة
ملاحظة: لقد ذكرت سابقا إن الدوال التي تسبق هذه الدالة تتعامل مع الأعداد فقط, لكن مع هذه الدالة يختلف الحال
فـ عند تعاملك مع قاعدة بيانات فإنها تقوم بعد عدد الصفوف وترجع لك القيمة
int[] Numbers = {1,2,3,4,5,6};
var Count = (from r in Numbers
select r).Count();
Label1.Text ="The Count Result is: "+ Count.ToString();النتيجة : 6
---------------
ملاحظات عامة :
لاحظ عزيزي القارئ في هذا الموضوع عملنا شيء جديد للـ الاستعلام الخاص بـ LINQ
حيث وضعت الاستعلام داخل ( ) , وهذا يعني أن الاستعلام أي كان شكله سوف ينفذ الدالة المطلوبة منه في الأخر , حتى لو وجدت شروط
مثلا لو كان عندنا جدول الموظفين ويحتوي على حقل الراتب وكتبت استعلام يرجع لي كل الموظفين الذين يحصلون على راتب وقدرة مبلغ معين وبعدها استخدمت دالة الـ Count ,, وهكذا .
----------
في النهاية إخواني أن شاء الله استطعت إيصال المعلومة بشكل صحيح وفي نفس الوقت بسيط
دمتم سالمين.