C# JArray C中的忽略大小写#

C# JArray C中的忽略大小写#,c#,json,C#,Json,我有我转换成JArray的回应。但由于区分大小写,我无法获得值。我正在使用字段Unknown,但从响应中它是Unknown,所以我得到了空结果 var jlist = JArray.Parse(response); reasonId = jlist.FirstOrDefault(i => i.Value<string>("AbsentReasonCD").Contains("Unknown")) .Value<string>("AbsentReasonId"

我有我转换成JArray的回应。但由于区分大小写,我无法获得值。我正在使用字段
Unknown
,但从响应中它是
Unknown
,所以我得到了空结果

var jlist = JArray.Parse(response);
reasonId = jlist.FirstOrDefault(i => i.Value<string>("AbsentReasonCD").Contains("Unknown"))
    .Value<string>("AbsentReasonId");

如何解决此问题?

在检查之前,您可以尝试将字符串大小写改为小写:

var jlist = JArray.Parse(response);
reasonId = jlist.FirstOrDefault(i => i.Value<string>("AbsentReasonCD")
    .ToLower().Contains("unknown")).Value<string>("AbsentReasonId");
var jlist=JArray.Parse(响应);
reasonId=jlist.FirstOrDefault(i=>i.Value(“absentrasoncd”)
.ToLower()包含(“未知”).Value(“AbsentReasonId”);
您可以改用它,它的重载需要:

i.Value(“absentrasoncd”)
.IndexOf(“未知”,StringComparison.InvariantCultureInogoreCase)!=-1.

如果要以不区分大小写的方式查找实际匹配
未知的元素,可以使用
StringComparison.invariantCultureInogoreCase
参数:

var jlist = JArray.Parse(response);
var reasonId = jlist.FirstOrDefault(i =>i.Value<string>("AbsentReasonCD")
                                         .Equals("Unknown",StringComparison.InvariantCultureIgnoreCase))
                    .Value<string>("AbsentReasonId");
var jlist=JArray.Parse(响应);
var reasonId=jlist.FirstOrDefault(i=>i.Value(“AbsentReasonCD”)
.Equals(“未知”,StringComparison.InvariantCultureIgnoreCase))
.价值(“Absenreasonid”);

var jlist=JArray.Parse(响应);
var mode=StringComparison.InvariantCultureIgnoreCase;
var reasonId=jlist.FirstOrDefault(i=>i.Value(“AbsentReasonCD”)
.Equals(“未知”,模式))
.价值(“Absenreasonid”);

一旦遇到第一个不匹配,
Equals
将返回
false
<代码>包含< /代码>或<代码>索引> <代码>,另一方面必须扫描整个字符串,因为<代码>未知<代码>可能出现在字符串的中间或结尾。

不应该使用<代码>等于<代码> >而不是<代码>包含< /代码>?谢谢指点。使用
Equals
有什么好处吗当然,它的速度更快,因为它不必在确定不匹配之前扫描整个字符串。一旦找到第一个不匹配项,它将返回
false
Contains
将匹配包含
Unknown
的字符串,例如
这不是Unknown
i.Value<string>("AbsentReasonCD")
 .IndexOf("Unknown", StringComparison.InvariantCultureIgnoreCase) != -1
var jlist = JArray.Parse(response);
var reasonId = jlist.FirstOrDefault(i =>i.Value<string>("AbsentReasonCD")
                                         .Equals("Unknown",StringComparison.InvariantCultureIgnoreCase))
                    .Value<string>("AbsentReasonId");
var jlist = JArray.Parse(response);
var mode = StringComparison.InvariantCultureIgnoreCase;
var reasonId = jlist.FirstOrDefault(i =>i.Value<string>("AbsentReasonCD")
                                         .Equals("Unknown",mode))
                    .Value<string>("AbsentReasonId");