ToUpper와 ToLower를 사용하여 대소 문자를 구분하지 않는 문자열 비교를 수행하는 것이 현명하지 않다는 것을 읽었지만 LINQ-to-SQL과 관련하여 대안이 없습니다. String.Compare의 ignoreCase 및 CompareOptions 인수는 LINQ-to-SQL에서 무시됩니다 (대소 문자를 구분하는 데이터베이스를 사용하는 경우 대소 문자를 구분하지 않는 비교를 요청하더라도 대소 문자를 구분합니다). ToLower 또는 ToUpper가 가장 적합한 옵션입니까? 하나는 다른 것보다 낫습니까? 어딘가 ToUpper가 더 낫다는 것을 읽었지만 여기에 적용되는지 모르겠습니다. (나는 많은 코드 검토를하고 있으며 모두가 ToLower를 사용하고 있습니다.)
Dim s = From row In context.Table Where String.Compare(row.Name, "test", StringComparison.InvariantCultureIgnoreCase) = 0
이것은 단순히 row.Name을 "test"와 비교하는 SQL 쿼리로 변환되며 대소 문자를 구분하는 데이터베이스에서 "Test"및 "TEST"를 반환하지 않습니다.
LINQQuery.Contains("VaLuE", StringComparer.CurrentCultureIgnoreCase)
및 다른 LINQ 확장과도 작동합니다LINQQuery.Except(new string[]{"A VaLUE","AnOTher VaLUE"}, StringComparer.CurrentCultureIgnoreCase)
. 와후!