Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Lọc phần tử mảng dựa trên điều kiện (Predicate) trong C#

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ạiCú phápVí dụ
Đơn giảnx => x > 10Lọc số > 10
Với index(x, i) => i % 2 == 0Chỉ phần tử index chẵn
Đa điều kiệnx => x > 0 && x < 100Trong khoảng (0, 100)
Gọi methodx => IsPrime(x)Lọc số nguyên tố
So sánh objectp => p.Age >= 18Người lớn tuổi

Lưu ý

  • Where thự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í.