English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

محسابات LINQ التفرع Skip & SkipWhile

يقوم محساب التفرع بتقسيم السلسلة (المجموعة) إلى جزأين ويعود إلى الجزء الأول.

الطريقةالوصف
Skip

من بداية السلسلة، يقوم بالقفز عن العناصر إلى الموضع المحدد.

SkipWhile

يقوم بالقفز عن العناصر بناءً على الشرط، حتى لا يرضي العنصر. إذا لم يرضي العنصر الأول الشرط نفسه، فإنه يقوم بالقفز عن 0 عنصر ويعود إلى جميع العناصر في السلسلة.

Take

من بداية السلسلة، يأخذ العنصر إلى الموضع المحدد.

TakeWhile

من العنصر الأول يعود إلى العنصر، حتى لا يرضي الشرط. إذا لم يرضي العنصر الأول الشرط نفسه، فإنه يعود إلى مجموعة فارغة.

Skip

تقوم طريقة Skip() بتخطي عدد معين من العناصر من البداية، والعودة إلى العناصر المتبقية.

IList<string> strList = new List<string>(){ "One", "Two", "Three", "Four", "Five" };
تعريفُ newList = strList.Skip(2);
foreach(var str in newList)
    Console.WriteLine(str);
الإخراج:
ثلاثة
أربعة
خمسة

ناشر Skip في بناء الاستعلام

لا يدعم بناء الاستعلام في C# ناشرين Skip و SkipWhile. ولكن يمكنك استخدام طرق Skip/SkipWhile للاستعلامات أو تعبئة الاستعلام بالكامل في أقواس، ثم استدعاء Skip/SkipWhile.

مثال التالي يوضح ناشر skip في بناء الاستعلام

Dim skipResult = From s In studentList
                 تخطي 3
                 اختر s

SkipWhile

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

يوجد نوعان من طريقة SkipWhile() المعدلة. الطريقة الأولى تأخذ بيانات الحكم من نوع Func<TSource, bool>، والطريقة الثانية تأخذ بيانات الحكم من نوع Func<TSource, int, bool> عبر بيانات الحكم بالفهرس.

في المثال التالي، سيقوم طريقة SkipWhile() بتخطي جميع العناصر حتى يجد نصًا طوله يساوي أو أكبر من 4 حروف.

مثال: استخدام طريقة SkipWhile() في C# لتخطي العناصر التي طولها أقل من 4، والعودة إلى العناصر التالية

IList<string> strList = جديد List<string>() { 
                                            "واحد" 
                                            "إثنين" 
                                            "ثلاثة" 
                                            "أربعة" 
                                            "خمسة" 
                                            "ستة"
تعريفُ الـresultList = strList.SkipWhile(s => s.Length < 4);
للدوران (string str في resultList)
        Console.WriteLine(str);
الإخراج:
ثلاثة
أربعة
خمسة
ستة

في المثال السابق، بسبب أن طول الأعمدة الأولية هو أقل من 3، سيقوم SkipWhile() بتخطي الأعمدة الأولية، وسيجد العنصر الثالث الذي طولُه يساوي أو أكبر من 4. بمجرد إيجاد أي عنصر طوله يساوي أو أكبر من 4 حروف، لن يمرر أي عنصر آخر، حتى لو كان أقل من 4 حروف.

الآن، انظر إلى المثال التالي، حيث لن يمرر SkipWhile () أي عنصر، لأن شرط的第一个 عنصر هو خطأ.

IList<string> strList = جديد List<string>() { 
                                            "ثلاثة" 
                                            "واحد" 
                                            "إثنين" 
                                            "أربعة" 
                                            "خمسة" 
                                            "ستة"
تعريفُ الـresultList = strList.SkipWhile(s => s.Length < 4);
للدوران (string str في resultList)
        Console.WriteLine(str);
الإخراج:
ثلاثة
واحد
إثنين
أربعة
خمسة
ستة

تقديم SkipWhile ثاني إعادة تعريف يمر بفاصلة العددية للعنصر. انظر المثال أدناه

مثال: استخدام SkipWhile() في C#
IList<string> strList = جديد List<string>() { 
                                            "واحد" 
                                            "إثنين" 
                                            "ثلاثة" 
                                            "أربعة" 
                                            "خمسة" 
                                            "ستة"
تعريف result = strList.SkipWhile((s, i) => s.Length > i);
للدوران (string str في result)
    Console.WriteLine(str);
الإخراج:
خمسة
ستة

في المثال السابق، تعبير lambda يشمل العنصر والفاصلة العددية للعنصر كمعامل. سيقوم بتخطي جميع العناصر حتى يكون طول العنصر أكبر من الفاصلة العددية.

عمليات SkipWhile في نحوية الاستعلام

نحوية استعلام C# لا تدعم عمليات Skip & SkipWhile. ولكن، يمكنك استخدام Skip/SkipWhile للمتغيرات الاستعلامية، أو وضع استعلام كامل داخل أقواس، ثم دعوة Skip/SkipWhile ().

مثال: استخدام SkipWhile في VB.Net
تعريف strList = جديد List(Of string) من {
                                        "واحد" 
                                        "إثنين" 
                                        "ثلاثة" 
                                        "أربعة" 
                                        "خمسة" 
                                        "ستة"
تعريف skipWhileResult = من s في studentList
                      تخطي While s.Length < 4
                      اختر s
الإخراج:
ثلاثة
أربعة
خمسة
ستة