Tôi đã đọc rằng việc sử dụng ToUpper và ToLower để thực hiện so sánh chuỗi không phân biệt chữ hoa chữ thường, nhưng tôi không thấy sự thay thế nào khi nói đến LINQ-to-SQL. Các đối số ignCase và soOptions của String.Compare bị LINQ-to-SQL bỏ qua (nếu bạn đang sử dụng cơ sở dữ liệu phân biệt chữ hoa chữ thường, bạn sẽ có được một so sánh phân biệt chữ hoa chữ thường ngay cả khi bạn yêu cầu so sánh không phân biệt chữ hoa chữ thường). ToLower hay ToUpper là lựa chọn tốt nhất ở đây? Cái này tốt hơn những cái khác phải không? Tôi nghĩ rằng tôi đã đọc ở đâu đó rằng ToUpper tốt hơn, nhưng tôi không biết nếu điều đó áp dụng ở đây. (Tôi đang thực hiện nhiều đánh giá mã và mọi người đang sử dụng ToLower.)
Dim s = From row In context.Table Where String.Compare(row.Name, "test", StringComparison.InvariantCultureIgnoreCase) = 0
Điều này chuyển thành một truy vấn SQL chỉ đơn giản là so sánh hàng. Tham khảo với "test" và sẽ không trả về "Test" và "TEST" trên cơ sở dữ liệu phân biệt chữ hoa chữ thường.
LINQQuery.Contains("VaLuE", StringComparer.CurrentCultureIgnoreCase)
vàLINQQuery.Except(new string[]{"A VaLUE","AnOTher VaLUE"}, StringComparer.CurrentCultureIgnoreCase)
. Wahoo!