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

عمود التقسيم في LINQ Take & TakeWhile

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

Take

Take() التوسيعية تعود عددًا محددًا من العناصر من البداية.

IList<string> strList = new List<string>(){ "One", "Two", "Three", "Four", "Five" };
var newList = strList.Take(2);
foreach(var str in newList)
    Console.WriteLine(str);
الناتج:
واحد
اثنان

لا يدعم جملة الاستعلام في C# عمود Take & takedwhile. ولكن، يمكنك استخدام Take/takedwhile في متغير الاستعلام، أو تعبئة الاستعلام بأكمله في أقواس، ثم استدعاء Take/takedwhile ().

Dim takeResult = From s In studentList
                 Take 3
                 Select s

TakeWhile

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

يوجد لـ TakeWhile طريقتان مزدوجتان. طريقة واحدة تأخذ موجهةFunc<TSource, bool>، والطريقة الأخرى تأخذ موجهةFunc<TSource, int, bool> عبر مؤشر العنصر

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

مثال: TakeWhile في C# يعيد العناصر التي طولها أكبر من 4

IList<string> strList = new List<string>() { 
                                            "ثلاثة", 
                                            "أربعة", 
                                            "خمس", 
                                            "مئة"};
var result = strList.TakeWhile(s => s.Length > 4);
foreach(string str in result)
        Console.WriteLine(str);
الناتج:
ثلاثة

في المثال السابق، يعيد TakeWhile() عنصرًا واحدًا فقط لأن العنصر الثاني للنص غير مطابق لهذا الشرط

TakeWhile يمرر أيضًا مؤشر الحالي للعنصر في دالة الشرط. مثال TakeWhile أدناه يأخذ العناصر حتى طول العنصر النصي أكبر من مؤشره

مثال: TakeWhile في C# يمرر مؤشر، ويعيد العناصر التي طولها أكبر من مؤشرها
IList<string> strList = new List<string>() { 
                                            "واحد", 
                                            "اثنان", 
                                            "ثلاثة", 
                                            "أربعة", 
                                            "خمس", 
                                            "Six"};
var resultList = strList.TakeWhile((s, i) => s.Length > i);
foreach(string str in resultList)
        Console.WriteLine(str);
الناتج:
واحد
اثنان
ثلاثة
أربعة