我已经读到使用ToUpper和ToLower执行不区分大小写的字符串比较是不明智的,但是在LINQ-to-SQL方面我看不到其他选择。LINQ-to-SQL会忽略String.Compare的ignoreCase和CompareOptions参数(如果使用区分大小写的数据库,则即使要求进行不区分大小写的比较,也会得到区分大小写的比较)。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)
和LINQQuery.Except(new string[]{"A VaLUE","AnOTher VaLUE"}, StringComparer.CurrentCultureIgnoreCase)
。哇!