我有以下代码行:
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"
为空......
知道为什么吗?
答案 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));