בדומה לטיפ של אתמול, נניח שיש לנו Log של שגיאות, ומעניין אותנו להתחיל לסרוק את הLog החל מהשגיאה הראשונה.
בניגוד למקרה של אתמול, בו רצינו לחתוך את האוסף של השגיאות ברגע בו מתחילה השגיאה הראשונה, במקרה זה הקוד הקלאסי שאנחנו צריכים לכתוב הוא יותר מסובך:
|
|
גם כאן יש לנו Extension Method שמאפשר לנו לבצע פעולה זו בדרך נחמדה יותר, לו קוראים SkipWhile. הוא מקבל פרדיקט וחותך את האוסף, כך שיתחיל מהאיבר הראשון שלא מקיים את הפרדיקט.
נוכל לכתוב במקום את הקודם מעלה, את הקוד הבא:
|
|
SkipWhile כמובן עובדת בצורה דומה למה שכתבנו למעלה.
כמו בTakeWhile, ורוב הדברים בLINQ, גם כאן יש overload שמתחשב גם באינדקס של האיבר:
|
|
חותך את 100 האיברים הראשונים, או החל מהשגיאה הראשונה.
הערה מעניינת:
הReSharper יודע לזהות לולאות של TakeWhile ולהציע להפוך אותן לשימוש בExtension Method במקום, אבל הוא לא יודע לעשות את זה עם לולאות SkipWhile.
(למרות שלא קשה לכתוב Highlighting Pattern כזה)