LINQ SkipWhile Method

شرح دالة SkipWhile() في LINQ

في هذا الدرس، سنتعلّم كيفية استخدام دالة SkipWhile()، والتي تُستخدم لتخطي العناصر من بداية التسلسل طالما أن شرطًا معينًا محقق. عند أول عنصر لا يحقق الشرط، يتم التوقف عن التخطي ويتم إرجاع باقي العناصر كما هي.



الصيغة العامة:


var result = collection.SkipWhile(condition);
  • condition: دالة شرطية تحدد متى يتم تخطي العنصر.


مثال عملي:


List<int> numbers = new List<int>() { 5, 10, 15, 3, 20 };

var result = numbers.SkipWhile(n => n < 15);

foreach (var number in result)
{
    Console.WriteLine(number);
}


الناتج:


15  
3  
20
تم تخطي 5 و 10 لأنهما أقل من 15.
عند الوصول إلى 15، الشرط لم يتحقق، فتوقفت عملية التخطي وتم إرجاع كل العناصر بعده كما هي.



الفرق بين Skip و SkipWhile:

الدالة ما الذي يتم تخطيه؟ تعتمد على عدد؟ تعتمد على شرط؟
Skip(n) عدد معين من العناصر من البداية ✅ نعم ❌ لا
SkipWhile(condition) كل عنصر طالما الشرط محقق ❌ لا ✅ نعم


مثال باستخدام كائنات:


public class Product
{
    public string Name { get; set; }
    public int Price { get; set; }
}

List<Product> products = new List<Product>()
{
    new Product() { Name = "Pen", Price = 5 },
    new Product() { Name = "Pencil", Price = 10 },
    new Product() { Name = "Notebook", Price = 25 },
    new Product() { Name = "Laptop", Price = 800 }
};

var result = products.SkipWhile(p => p.Price < 30);

foreach (var product in result)
{
    Console.WriteLine(product.Name);
}


الناتج:


Notebook  
Laptop



ملاحظات مهمة:

  • إذا كانت كل العناصر تحقق الشرط → سيتم إرجاع تسلسل فارغ.
  • إذا كان أول عنصر لا يحقق الشرط → يتم إرجاع كل العناصر دون تخطي.
  • بعد أول عنصر يفشل في الشرط، يتم إرجاع كل ما بعده دون فحص.


تعليقات

المشاركات الشائعة من هذه المدونة

C# - Arrays

Entity Framework - ما هو ORM؟ ونبذة عن Dapper وNHibernate

Entity Framework - مقدمة عن Entity Framework