使用StringComparison.InvariantCultureIgnoreCase

时间:2014-05-01 13:36:23

标签: c#

我有以下代码行:

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"为空......

知道为什么吗?

2 个答案:

答案 0 :(得分:2)

不应该吗?

var d = value.FirstOrDefault(x => String.Equals(x.Culture, Thread.CurrentThread.CurrentCulture.Name, StringComparison.InvariantCultureIgnoreCase));

答案 1 :(得分:0)

您的问题在这里:

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));