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
. - توليد بيانات: مثالية لتوليد بيانات لاختبار التطبيقات.
- الفهرسة: لإنشاء تسلسل يساعد في الوصول إلى عناصر مصفوفة أو قائمة.
- الحلقات: بديل سريع وآمن لـ
تعليقات
إرسال تعليق