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

Kiểm tra mảng có chứa phần tử thỏa mãn điều kiện trong C#

Giới thiệu

Phương thức tĩnh Array.Exists<T>(T[] array, Predicate<T> match) kiểm tra xem mảng có chứa ít nhất một phần tử thỏa mãn điều kiện (predicate) hay không. Trả về true nếu tìm thấy, ngược lại false.

Ví dụ 1 - Kiểm tra tiền tố chuỗi

using System;

public class Demo
{
    public static void Main()
    {
        string[] products = { "Electronics", "Accessories", "Clothing", "Toys", "Clothing", "Furniture" };

        Console.WriteLine("Danh sách sản phẩm...");
        foreach (string s in products)
        {
            Console.WriteLine(s);
        }

        Console.WriteLine("\nCó sản phẩm nào bắt đầu bằng 'C'? = {0}",
            Array.Exists(products, ele => ele.StartsWith("C")));
        Console.WriteLine("Có sản phẩm nào bắt đầu bằng 'D'? = {0}",
            Array.Exists(products, ele => ele.StartsWith("D")));
        Console.WriteLine("Có sản phẩm nào bắt đầu bằng 'T'? = {0}",
            Array.Exists(products, ele => ele.StartsWith("T")));
        Console.WriteLine("Có sản phẩm nào bắt đầu bằng 'E'? = {0}",
            Array.Exists(products, ele => ele.StartsWith("E")));
    }
}

Kết quả

Danh sách sản phẩm...
Electronics
Accessories
Clothing
Toys
Clothing
Furniture
Có sản phẩm nào bắt đầu bằng 'C'? = True
Có sản phẩm nào bắt đầu bằng 'D'? = False
Có sản phẩm nào bắt đầu bằng 'T'? = True
Có sản phẩm nào bắt đầu bằng 'E'? = True

Ví dụ 2 - Kiểm tra giá trị chính xác và tiền tố

using System;

public class Demo
{
    public static void Main()
    {
        string[] products = { "Electronics", "Accessories", "Clothing", "Toys", "Clothing", "Furniture" };

        Console.WriteLine("Danh sách sản phẩm...");
        foreach (string s in products)
        {
            Console.WriteLine(s);
        }

        Console.WriteLine("Sản phẩm 'Accessories' có trong mảng? = {0}",
            Array.Exists(products, ele => ele == "Accessories"));
        Console.WriteLine("Sản phẩm 'Stationery' có trong mảng? = {0}",
            Array.Exists(products, ele => ele == "Stationery"));

        Console.WriteLine("\nCó sản phẩm nào bắt đầu bằng 'C'? = {0}",
            Array.Exists(products, ele => ele.StartsWith("C")));
        Console.WriteLine("Có sản phẩm nào bắt đầu bằng 'D'? = {0}",
            Array.Exists(products, ele => ele.StartsWith("D")));
        Console.WriteLine("Có sản phẩm nào bắt đầu bằng 'T'? = {0}",
            Array.Exists(products, ele => ele.StartsWith("T")));
        Console.WriteLine("Có sản phẩm nào bắt đầu bằng 'E'? = {0}",
            Array.Exists(products, ele => ele.StartsWith("E")));
    }
}

Kết quả

Danh sách sản phẩm...
Electronics
Accessories
Clothing
Toys
Clothing
Furniture
Sản phẩm 'Accessories' có trong mảng? = True
Sản phẩm 'Stationery' có trong mảng? = False
Có sản phẩm nào bắt đầu bằng 'C'? = True
Có sản phẩm nào bắt đầu bằng 'D'? = False
Có sản phẩm nào bắt đầu bằng 'T'? = True
Có sản phẩm nào bắt đầu bằng 'E'? = True

Các phương thức Array hữu ích khác

  • Array.Find<T>(): Trả về phần tử đầu tiên thỏa mãn điều kiện.
  • Array.FindAll<T>(): Trả về mảng con chứa tất cả phần tử thỏa mãn.
  • Array.FindIndex<T>(): Trả về chỉ mục phần tử đầu tiên thỏa mãn.
  • Array.FindLast<T>() / FindLastIndex<T>(): Tìm từ cuối mảng.
  • Array.TrueForAll<T>(): Kiểm tra tất cả phần tử thỏa mãn điều kiện.

Lưu ý quan trọng

  • Array.Exists dừng lại ngay khi tìm thấy phần tử đầu tiên thỏa mãn (short-circuit).
  • Predicate là delegate: Func<T, bool> hoặc lambda expression.
  • Độ phức tạp O(n) vì duyệt tuyến tính.
  • Hoạt động với mọi kiểu mảng (primitive, object, struct).