Я читал, что нецелесообразно использовать ToUpper и ToLower для выполнения сравнений строк без учета регистра, но я не вижу альтернативы, когда дело доходит до LINQ-to-SQL. Аргументы ignoreCase и CompareOptions String.Compare игнорируются LINQ-to-SQL (если вы используете чувствительную к регистру базу данных, вы получаете сравнение с учетом регистра, даже если вы запрашиваете сравнение без учета регистра). Является ToLower или ToUpper лучшим вариантом здесь? Лучше другого? Мне показалось, что я где-то читал, что ToUpper был лучше, но я не знаю, применимо ли это здесь. (Я делаю много обзоров кода, и каждый использует ToLower.)
Dim s = From row In context.Table Where String.Compare(row.Name, "test", StringComparison.InvariantCultureIgnoreCase) = 0
Это переводит на SQL-запрос, который просто сравнивает row.Name с "test" и не возвращает "Test" и "TEST" в базе данных, чувствительной к регистру.