Ngôn ngữ LINQ - Toán tử SkipWhile

Phương thức SkipWhile trong LINQ

Như tên gọi, phương thức mở rộng SkipWhile trong LINQ bỏ qua các phần tử trong danh sách nếu điều kiện được chỉ định là true.

Nó trả về một danh sách mới bao gồm tất cả các phần tử còn lại sau khi điều kiện được chỉ định trở thành false cho bất kỳ phần tử nào.

Phương thức SkipWhile có hai phương thức quá tải. Phương thức quả tải đầu tiên chấp nhận kiểu delegate Func<TSource, bool> và phương thức quá tải thứ hai chấp nhận kiểu delegate Func<TSource, int, bool> để truyền chỉ mục của một phần tử.

Trong ví dụ sau, phương thức SkipWhile bỏ qua các phần tử cho đến khi nó tìm thấy một chuỗi có độ dài lớn hơn hoặc bằng 4 ký tự.

IList<string> strList = new List<string>() {"One", "Two", "Three", "Four", "Five", "Six"  };

 var resultList = strList.SkipWhile(s => s.Length < 4);
	foreach(string str in resultList)
		Console.WriteLine(str);

Đây là kết quả khi biên dịch và thực thi chương trình:

Three
Four
Five
Six

Xem ví dụ

Trong ví dụ trên, phương thức SkipWhile bỏ qua hai phần tử đầu tiên vì độ dài của chúng nhỏ hơn 4 và tìm thấy phần tử thứ ba có độ dài bằng 4.

Một khi nó tìm thấy bất kỳ phần tử nào có độ dài lớn hơn hoặc bằng 4 ký tự thì nó sẽ không bỏ qua bất kỳ phần tử nào khác ngay cả khi chúng có ít hơn 4 ký tự.

Bây giờ, hãy xem ví dụ sau trong đó phương thức SkipWhile không bỏ qua bất kỳ phần tử nào vì điều kiện được chỉ định là sai cho phần tử đầu tiên.

IList<string> strList = new List<string>(){  "Three", "One", "Two",  "Four", "Five","Six" };

var newList = strList.SkipWhile(s => s.Length < 4);
foreach(var str in newList)
    Console.WriteLine(str);

    

Đây là kết quả khi biên dịch và thực thi chương trình:

Three
One
Two
Four
Five
Six

Xem ví dụ

Phương thức quá tải thứ hai của SkipWhile truyền vào một chỉ mục của từng phần tử. Hãy xem ví dụ sau:

IList<string> strList = new List<string>(){ "One", "Two", "Three", "Four", "Five", "Six" };

var newList = strList.SkipWhile((s, i) => s.Length > i);
foreach(var str in newList)
    Console.WriteLine(str);

    

Đây là kết quả khi biên dịch và thực thi chương trình:

Five
Six

Xem ví dụ

Trong ví dụ trên, biểu thức lambda bao gồm phần tử và chỉ mục của một phần tử làm tham số. Nó bỏ qua tất cả các phần tử nếu độ dài của phần tử chuỗi lớn hơn chỉ mục của nó.

Lưu ý: Toán tử SkipWhile không hỗ trợ cú pháp truy vấn trong LINQ.