Tôi có một danh sách testList
có chứa một chuỗi các chuỗi. Tôi muốn thêm một chuỗi mới vào số testList
chỉ khi nó chưa tồn tại trong danh sách. Do đó, tôi cần phải thực hiện tìm kiếm không phân biệt chữ hoa chữ thường và làm cho nó hiệu quả. Tôi không thể sử dụng Contains
vì điều đó không tính đến vỏ bọc. Tôi cũng không muốn sử dụng ToUpper/ToLower
vì lý do hiệu suất. Tôi đã xem qua phương pháp này, hoạt động:Tìm kiếm danh sách phân biệt chữ hoa chữ thường
if(testList.FindAll(x => x.IndexOf(keyword,
StringComparison.OrdinalIgnoreCase) >= 0).Count > 0)
Console.WriteLine("Found in list");
Tác phẩm này, nhưng cũng phù hợp với từng phần. Nếu danh sách chứa "dê", tôi không thể thêm "yến mạch" vì nó tuyên bố rằng "yến mạch" đã có trong danh sách. Có cách nào để tìm kiếm danh sách hiệu quả theo cách không phân biệt chữ hoa chữ thường, từ nào phải khớp chính xác không? cảm ơn
Chỉ cần thêm, trong một vài xét nghiệm nhanh chóng, dường như phương pháp đầu tiên là nhanh hơn khoảng 50%. Có thể ai đó khác có thể xác nhận/phủ nhận điều đó. – Brap
Kể từ .NET 2.0, điều này bây giờ dễ dàng thực hiện - xem câu trả lời của shaxby bên dưới. – Joe
Tham chiếu của phương thức Chứa phương pháp shaxby (có một tình trạng quá tải chiếm IEqualityComparer) là một phần của LINQ, vì vậy chắc chắn nó không có sẵn từ .NET 2.0. Chỉ có lớp StringComparer đã được khoảng một thời gian. Danh sách không có phương pháp đó, cũng không ArrayList hoặc StringCollection (những thứ mà ông có thể dễ dàng được tham chiếu như là 'danh sách' của mình). –