Phương thức SkipWhile() trong LINQ cho phép bỏ qua các phần tử từ đầu chuỗi (sequence) miễn là điều kiện được chỉ định vẫn trả về true. Khi gặp phần tử đầu tiên làm cho điều kiện thành false, phương thức dừng việc bỏ qua và trả về các phần tử còn lại.
Ví dụ minh họa
Cho mảng điểm số:
int[] marks = { 35, 42, 48, 88, 55, 90, 95, 85 };
Điều kiện: bỏ qua các phần tử >= 50.
s => s >= 50
Mã nguồn hoàn chỉnh
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 };
// Sắp xếp giảm dần rồi bỏ qua các phần tử >= 50
IEnumerable selMarks = marks.AsQueryable()
.OrderByDescending(s => s)
.SkipWhile(s => s >= 50);
Console.WriteLine("Đã bỏ qua các điểm >= 50...");
foreach (int res in selMarks)
{
Console.WriteLine(res);
}
}
}
Kết quả
Đã bỏ qua các điểm >= 50...
48
42
35
Giải thích
Mảng được sắp xếp giảm dần: 95, 90, 88, 85, 55, 48, 42, 35. Phương thức SkipWhile bỏ qua 95, 90, 88, 85, 55 (vì đều >= 50) và dừng lại ở 48. Kết quả trả về là 48, 42, 35.
Lưu ý: SkipWhile khác với Where - Where lọc tất cả các phần tử thoả mãn điều kiện, trong khi SkipWhile chỉ bỏ qua từ đầu cho đến khi điều kiện sai.