Saya telah membaca bahwa tidak bijaksana menggunakan ToUpper dan ToLower untuk melakukan perbandingan string yang tidak peka huruf besar / kecil, tetapi saya tidak melihat alternatif lain dalam hal LINQ-to-SQL. Argumen ignoreCase dan CompareOptions dari String.Compare diabaikan oleh LINQ-to-SQL (jika Anda menggunakan database case-sensitive, Anda mendapatkan perbandingan case-sensitive bahkan jika Anda meminta perbandingan case-sensitive). Apakah ToLower atau ToUpper merupakan opsi terbaik di sini? Apakah yang satu lebih baik dari yang lain? Saya pikir saya pernah membaca bahwa ToUpper lebih baik, tetapi saya tidak tahu apakah itu berlaku di sini. (Saya melakukan banyak tinjauan kode dan semua orang menggunakan ToLower.)
Dim s = From row In context.Table Where String.Compare(row.Name, "test", StringComparison.InvariantCultureIgnoreCase) = 0
Ini diterjemahkan menjadi kueri SQL yang hanya membandingkan row.Name dengan "test" dan tidak akan mengembalikan "Test" dan "TEST" pada database case-sensitive.
LINQQuery.Contains("VaLuE", StringComparer.CurrentCultureIgnoreCase)
danLINQQuery.Except(new string[]{"A VaLUE","AnOTher VaLUE"}, StringComparer.CurrentCultureIgnoreCase)
. Wahoo!