Giới thiệu
Phương thức TakeWhile() trong LINQ trả về các phần tử từ đầu chuỗi cho đến khi một điều kiện (predicate) trả về false. Nó dừng lại ngay tại phần tử đầu tiên không thỏa mãn điều kiện.
Ví dụ cơ bản
Mảng đầu vào:
int[] arr = { 25, 40, 65, 70 };
Lấy các phần tử nhỏ hơn 30:
var val = arr.TakeWhile(ele => ele < 30);
Ví dụ hoàn chỉnh
using System;
using System.Linq;
public class Demo
{
public static void Main()
{
int[] arr = { 25, 40, 65, 70 };
var val = arr.TakeWhile(ele => ele < 30);
foreach (int res in val)
{
Console.WriteLine(res);
}
}
}
Kết quả
25
Sự khác biệt với Where()
Where()lọc tất cả phần tử thỏa mãn điều kiện ở bất kỳ vị trí nào.TakeWhile()chỉ lấy phần tử từ đầu chuỗi và dừng lại khi gặp phần tử đầu tiên không thỏa mãn.
Ví dụ so sánh
int[] arr = { 25, 40, 15, 70 };
// TakeWhile: chỉ lấy 25 (dừng tại 40)
var takeWhile = arr.TakeWhile(x => x < 30); // {25}
// Where: lấy tất cả < 30
var where = arr.Where(x => x < 30); // {25, 15}
Lưu ý
- Có nạp chồng
TakeWhile(Func<T, int, bool>)cho phép truy cập chỉ số (index) của phần tử. - Phương thức thực thi trì hoãn (deferred execution).