Using StringComparison.InvariantCultureIgnoreCase
本文关键字:InvariantCultureIgnoreCase StringComparison Using | 更新日期: 2023-09-27 18:01:01
我有以下代码行:
var c = value.FirstOrDefault(x => x.Culture == Thread.CurrentThread.CurrentCulture.Name);
var d = value.FirstOrDefault(x => String.Equals(x.Culture == Thread.CurrentThread.CurrentCulture.Name, StringComparison.InvariantCultureIgnoreCase));
基本上,我正在寻找一个区域性(字符串(与当前线程区域性相同的项。
如果当前区域性是"en-US"
,即使其区域性是"en-us"
,我也希望获得该项。。。所以我想忽略这个案子。
奇怪的是,"c"
变成了项,而"d"
为空。。。
知道为什么吗?
应该是吗?
var d = value.FirstOrDefault(x => String.Equals(x.Culture, Thread.CurrentThread.CurrentCulture.Name, StringComparison.InvariantCultureIgnoreCase));
您的问题在这里:
var d ... x.Culture == Thread.CurrentThread.CurrentCulture.Name
它的计算结果为true
,因此使用它的string.Equals
会产生意外的结果。
所以正确的代码:
var d = value.FirstOrDefault(x => String.Equals(x.Culture, Thread.CurrentThread.CurrentCulture.Name, StringComparison.InvariantCultureIgnoreCase));