我已经读到,使用ToUpper和ToLower来执行不区分大小写的字符串比较是不明智的,但对于LINQ到SQL,我看不到其他 Select .字符串的ignoreCase和CompareOptions参数.LINQ对SQL忽略比较(如果使用区分大小写的数据库,即使要求进行区分大小写的比较,也会得到区分大小写的比较).ToLower或ToUpper是这里最好的 Select 吗?一个比另一个好吗?我想我在哪里读到过图珀更好,但我不知道这是否适用于这里.(我做了很多代码审查,每个人都在使用ToLower.)

Dim s = From row In context.Table Where String.Compare(row.Name, "test", StringComparison.InvariantCultureIgnoreCase) = 0

这转化为一个SQL查询,它只是比较行.使用"test"命名,并且不会在区分大小写的数据库上返回"test"和"test".

推荐答案

正如您所说,ToHigh和Tolower之间有一些重要的区别,当您try 执行不区分大小写的相等判断时,只有一个是可靠准确的.

理想情况下,执行不区分大小写的相等性判断的最佳方法是:

String.Equals(row.Name, "test", StringComparison.OrdinalIgnoreCase)

NOTE, HOWEVER在这种情况下这是not work!因此,我们只能 Select ToUpperToLower.

请注意OrdinalIgnoreCase,以确保其安全.但是,您使用的区分大小写判断的确切类型取决于您的目的.但通常情况下,在排序时使用EQUALS进行相等判断和比较,然后为作业(job) Select 正确的StringCompison.

迈克尔·卡普兰(一位公认的文化和性格处理权威)在ToUpper vs.ToLower上有相关帖子:

他说"串到上百"

.net相关问答推荐

如何在AutoMapper中添加自定义方法到项目中?

Msbuild try 构建 msbuild.exe 而不是我的 .csproj 文件

FileHelpers 未使用正确的日期格式

process.WaitForExit() 异步

为什么 StyleCop 建议在方法或属性调用前加上this?

.NET 的 Visual Studio 调试器提示和技巧

HttpClient 请求抛出 IOException

在 C# 中将字节数组保存为磁盘上的文件的最有效方法是什么?

IIS Express - 500.19 无法读取配置文件 - 因为它正在查看错误的路径

OpenCV的.Net(dotNet)包装器?

简单委托(委托)与多播委托

LINQ 性能常见问题解答

无法加载文件或程序集'System.ComponentModel.Annotations,版本 = 4.1.0.0

从 List 到数组 T[] 的转换

在 .NET 中查找下一个 TCP 端口

何时使用抽象类?

C# List<> 按 x 然后 y 排序

如何在 Dapper.Net 中编写一对多查询?

如何重新启动我的 C# WinForm 应用程序?

C#/.NET 中仅命名空间的类可见性?