Câu trả lời:
array.Contains("str", StringComparer.OrdinalIgnoreCase);
Hoặc tùy thuộc vào hoàn cảnh cụ thể, bạn có thể thích:
array.Contains("str", StringComparer.CurrentCultureIgnoreCase);
array.Contains("str", StringComparer.InvariantCultureIgnoreCase);
InvariantCulture. Sử dụng bất kỳ một trong ba lựa chọn ở trên tùy thuộc vào hoàn cảnh. Tôi không phản đối việc sắp xếp lại của bạn, nhưng tôi đang xóa nhận xét "có thể không". Điều đó đã được làm rõ trong câu trả lời rằng bạn nên chọn câu trả lời phù hợp với bạn trong tình huống hiện tại.
Một số lưu ý quan trọng từ phía tôi, hoặc ít nhất là đặt một số thông tin phân tán ở một nơi - liên quan đến mẹo ở trên với StringComparer như trong:
if (array.Contains("str", StringComparer.OrdinalIgnoreCase))
{}
array.Contains() là một phương thức mở rộng LINQ và do đó chỉ hoạt động theo tiêu chuẩn với .NET 3.5 trở lên, cần:
using System;
using System.Linq;
Nhưng: trong .NET 2.0, Contains()phương thức đơn giản (không tính đến trường hợp không nhạy cảm với tài khoản) ít nhất có thể như thế này, với một diễn viên:
if ( ((IList<string>)mydotNet2Array).Contains(“str”) )
{}
Vì phương thức Contains () là một phần của giao diện IList, nên phương thức này hoạt động không chỉ với các mảng, mà còn với các danh sách, v.v.
Triển khai một IEqualityComparer tùy chỉnh có tính đến trường hợp không nhạy cảm.
Ngoài ra, kiểm tra này . Vì vậy, về lý thuyết, tất cả những gì bạn phải làm là:
myArray.Contains("abc", ProjectionEqualityComparer<string>.Create(a => a.ToLower()))
new[] { "ABC" }.Select(e => e.ToLower()).Contains("abc") // returns true
CurrentCulture), bạn nên sử dụngOrdinalchứ không phảiInvariantCulture.