LINQ Range Method في C#
شرح دالة Range() في LINQ
في هذا الدرس، سنتعرّف على دالة Range() في LINQ بلغة C#، والتي تُستخدم لتوليد تسلسل من الأعداد الصحيحة ضمن نطاق محدد، بطريقة بسيطة وسريعة.
تُعتبر Range() من دوال التوليد (Generation Operators) في LINQ، مثل Repeat() وEmpty()، وتُستخدم بكثرة في التكرار، والاختبار، وإنشاء بيانات أولية.
الصيغة العامة:
IEnumerable<int> numberSequence = Enumerable.Range(int start, int count);
start: القيمة التي يبدأ منها التسلسل.count: عدد القيم المتتابعة التي سيتم توليدها.
ملاحظة: إذا كانت قيمةcountسالبة أو إذا تجاوزstart + count - 1الحد الأقصى لـInt32، سيتم إطلاق استثناء من نوعArgumentOutOfRangeException.
مثال 1: توليد الأعداد من 1 إلى 10
using System;
using System.Linq;
class Program
{
static void Main()
{
IEnumerable<int> numberSequence = Enumerable.Range(1, 10);
foreach (int num in numberSequence)
{
Console.Write($"{num} ");
}
}
}
الناتج:
1 2 3 4 5 6 7 8 9 10
مثال 2: تصفية الأعداد الزوجية باستخدام Where
var evenNumbers = Enumerable.Range(10, 40)
.Where(x => x % 2 == 0);
foreach (int num in evenNumbers)
{
Console.Write($"{num} ");
}
الناتج:
10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48
مثال 3: استخدام Select لحساب مربع كل عدد
var squares = Enumerable.Range(1, 5)
.Select(x => x * x);
foreach (int square in squares)
{
Console.Write($"{square} ");
}
الناتج:
1 4 9 16 25
ملاحظات هامة:
- التنفيذ المؤجل: دالة
Range()تُنفّذ باستخدام Deferred Execution، أي لا تُنفّذ فعليًا إلا عند التكرار عليها. - سيناريوهات الاستخدام:
- الحلقات: بديل سريع وآمن لـ
for loop. - توليد بيانات: مثالية لتوليد بيانات لاختبار التطبيقات.
- الفهرسة: لإنشاء تسلسل يساعد في الوصول إلى عناصر مصفوفة أو قائمة.
- الحلقات: بديل سريع وآمن لـ
تعليقات
إرسال تعليق