Ho letto che non è saggio usare ToUpper e ToLower per eseguire confronti di stringhe senza distinzione tra maiuscole e minuscole, ma non vedo alternative quando si tratta di LINQ-to-SQL. Gli argomenti ignoreCase e CompareOptions di String.Compare vengono ignorati da LINQ-to-SQL (se si utilizza un database con distinzione tra maiuscole e minuscole, si ottiene un confronto con distinzione tra maiuscole e minuscole anche se si richiede un confronto senza distinzione tra maiuscole e minuscole). ToLower o ToUpper è l'opzione migliore qui? Uno è migliore dell'altro? Pensavo di aver letto da qualche parte che ToUpper era migliore, ma non so se questo vale qui. (Sto facendo molte revisioni del codice e tutti usano ToLower.)
Dim s = From row In context.Table Where String.Compare(row.Name, "test", StringComparison.InvariantCultureIgnoreCase) = 0
Questo si traduce in una query SQL che confronta semplicemente row.Name con "test" e non restituirà "Test" e "TEST" su un database sensibile al maiuscolo / minuscolo.
LINQQuery.Contains("VaLuE", StringComparer.CurrentCultureIgnoreCase)
eLINQQuery.Except(new string[]{"A VaLUE","AnOTher VaLUE"}, StringComparer.CurrentCultureIgnoreCase)
. Wahoo!