ใช้เมธอด SkipWhile() เพื่อข้ามองค์ประกอบจากลำดับ (Sequence) ตราบใดที่เงื่อนไขที่ระบุยังคงเป็นจริง เมธอดนี้จะหยุดข้ามทันทีที่พบองค์ประกอบที่ไม่ตรงตามเงื่อนไข
ตัวอย่างข้อมูลและเงื่อนไข
อาร์เรย์ตัวอย่าง:
int[] marks = { 35, 42, 48, 88, 55, 90, 95, 85 };
เงื่อนไข: ข้ามค่าที่มากกว่าหรือเท่ากับ 50
s => s >= 50
เนื่องจากอาร์เรย์ไม่ได้เรียงลำดับ จึงควรเรียงลำดับก่อน (เช่น เรียงจากมากไปน้อย) เพื่อให้ SkipWhile ทำงานตามที่คาดหวัง
ตัวอย่างโค้ดเต็ม
using System;
using System.Linq;
using System.Collections.Generic;
public class Demo
{
public static void Main()
{
int[] marks = { 35, 42, 48, 88, 55, 90, 95, 85 };
// ข้ามค่าที่ >= 50 หลังจากเรียงลำดับจากมากไปน้อย
IEnumerable selMarks = marks.AsQueryable()
.OrderByDescending(s => s)
.SkipWhile(s => s >= 50);
Console.WriteLine("ข้ามคะแนน > 50 แล้ว...");
foreach (int res in selMarks)
{
Console.WriteLine(res);
}
}
}
ผลลัพธ์
ข้ามคะแนน > 50 แล้ว... 48 42 35
สังเกต: SkipWhile จะข้ามองค์ประกอบตั้งแต่ต้นลำดับจนกว่าจะพบค่าที่ไม่ตรงเงื่อนไข (คือค่าน้อยกว่า 50) แล้วจึงส่งค่าที่เหลือทั้งหมดกลับมา