Sử dụng phương thức Where() của LINQ kết hợp với predicate (hàm điều kiện trả về bool) để lọc các phần tử trong mảng/tập hợp thỏa mãn điều kiện.
Ví dụ: Lọc phần tử >= 50
int[] arr = { 40, 42, 12, 83, 75, 40, 95 };
var result = arr.Where(a => a >= 50); // 83, 75, 95
Mã nguồn hoàn chỉnh
using System;
using System.Linq;
using System.Collections.Generic;
public class Demo
{
public static void Main()
{
int[] arr = { 40, 42, 12, 83, 75, 40, 95 };
Console.WriteLine("Mảng gốc:");
foreach (int a in arr) Console.WriteLine(a);
// Lọc phần tử >= 50
IEnumerable myQuery = arr.AsQueryable()
.Where((a, index) => a >= 50);
Console.WriteLine("\nPhần tử >= 50:");
foreach (int res in myQuery) Console.WriteLine(res);
}
}
Kết quả
Mảng gốc:
40
42
12
83
75
40
95
Phần tử >= 50:
83
75
95
Các dạng Predicate
| Loại | Cú pháp | Ví dụ |
|---|---|---|
| Đơn giản | x => x > 10 | Lọc số > 10 |
| Với index | (x, i) => i % 2 == 0 | Chỉ phần tử index chẵn |
| Đa điều kiện | x => x > 0 && x < 100 | Trong khoảng (0, 100) |
| Gọi method | x => IsPrime(x) | Lọc số nguyên tố |
| So sánh object | p => p.Age >= 18 | Người lớn tuổi |
Lưu ý
Wherethực thi trì hoãn (deferred) - chỉ lọc khi duyệt (foreach, ToList...).- Có thể chuỗi nhiều
Where:.Where(c1).Where(c2)= AND. - Predicate với index hữu ích cho: lấy phần tử chẵn/lẻ, skip/take theo vị trí.