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

Kiểm tra item tồn tại trong mảng C#

Kiểm tra phần tử trong mảng: Array.Exists, Array.IndexOf, Array.BinarySearch (sorted), LINQ Contains/Any.

Ví dụ minh họa

using System;
using System.Linq;

class Program
{
    static void Main()
    {
        string[] arr = { "abcd", "ijkl", "pqrs", "wxyz" };
        string target = "pqrs";
        
        Console.WriteLine($"Mảng: [{string.Join(", ", arr)}]");
        Console.WriteLine($"Tìm: {target}");
        
        // Cách 1: Array.Exists - predicate
        bool found = Array.Exists(arr, s => s == target);
        Console.WriteLine($"Array.Exists: {found}");
        
        // Cách 2: Array.IndexOf - trả về index (-1 nếu không tìm thấy)
        int index = Array.IndexOf(arr, target);
        Console.WriteLine($"Array.IndexOf: {index}"); // 2
        
        // Cách 3: LINQ Contains
        bool linqContains = arr.Contains(target);
        Console.WriteLine($"LINQ Contains: {linqContains}");
        
        // Cách 4: LINQ Any với predicate
        bool linqAny = arr.Any(s => s == target);
        Console.WriteLine($"LINQ Any: {linqAny}");
        
        // Cách 5: BinarySearch - CẦN MẢNG ĐÃ SORT
        string[] sorted = { "abcd", "ijkl", "pqrs", "wxyz" }; // Đã sort
        int bsIndex = Array.BinarySearch(sorted, target);
        Console.WriteLine($"BinarySearch (sorted): {bsIndex}"); // 2
        
        // Foreach manual (code gốc)
        Console.WriteLine("\nManual foreach:");
        foreach (string item in arr)
        {
            if (item.Equals(target))
            {
                Console.WriteLine("Item Found");
                break;
            }
        }
    }
}

Kết quả đầu ra

Mảng: [abcd, ijkl, pqrs, wxyz]
Tìm: pqrs
Array.Exists: True
Array.IndexOf: 2
LINQ Contains: True
LINQ Any: True
BinarySearch (sorted): 2

Manual foreach:
Item Found

Hiệu năng: Mảng nhỏ → Contains/IndexOf. Mảng lớn sorted → BinarySearch O(log n). Tra cứu nhiều lần → chuyển sang HashSet O(1).