LINQ TakeWhile Method
شرح دالة TakeWhile() في LINQ
في هذا الدرس، سنتعرّف على دالة TakeWhile() في LINQ، والتي تُستخدم لاستخراج العناصر من بداية التسلسل طالما أن شرطًا معينًا محقق. بمجرد أن يفشل الشرط لأول مرة، تتوقف عن جلب المزيد من العناصر، حتى لو كانت بقية العناصر تحقق الشرط.
الصيغة العامة:
var result = collection.TakeWhile(condition);
condition
: شرط من نوعFunc<T, bool>
يُطبّق على كل عنصر.
مثال عملي:
List<int> numbers = new List<int>() { 5, 10, 15, 6, 3, 20 };
var result = numbers.TakeWhile(n => n < 15);
foreach (var number in result)
{
Console.WriteLine(number);
}
الناتج:
5
10
تم التوقف عند15
لأنه لا يحقق الشرطn < 15
، حتى لو أن6
و3
بعده تحقق الشرط.
الفرق بين Take و TakeWhile:
الدالة | تعتمد على | طريقة الإيقاف |
---|---|---|
Take(n) |
عدد | تأخذ أول n عناصر دائمًا |
TakeWhile(condition) |
شرط | تأخذ العناصر طالما الشرط محقق |
مثال باستخدام كائنات:
public class Product
{
public string Name { get; set; }
public int Price { get; set; }
}
List<Product> products = new List<Product>
{
new Product() { Name = "Keyboard", Price = 200 },
new Product() { Name = "Mouse", Price = 150 },
new Product() { Name = "Monitor", Price = 300 },
new Product() { Name = "CPU", Price = 100 }
};
var result = products.TakeWhile(p => p.Price < 250);
foreach (var product in result)
{
Console.WriteLine(product.Name);
}
الناتج:
Keyboard
Mouse
تم التوقف عند "Monitor" لأن سعره 300، وهو لا يحقق الشرط Price < 250
.
ملاحظات مهمة:
TakeWhile()
تعمل فقط من البداية. لا ترجع إلى العناصر التالية بعد فشل الشرط.- إذا كان أول عنصر لا يحقق الشرط → تُرجع مجموعة فارغة.
- لا توجد دالة
TakeWhileOrDefault()
لأن النتيجة عبارة عن تسلسل وليس عنصر واحد.
تعليقات
إرسال تعليق