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

知道为什么吗?

Using StringComparison.InvariantCultureIgnoreCase

应该是吗?

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));
相关文章:
  • 没有找到相关文章