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).