我有一个JTokens列表,我需要确定是否有任何令牌包含某个值。例如,我需要知道令牌列表是否包含单词" Checking"。列表中的第一个JToken包含值"检查11010000"。
以下是一些实际编译的尝试。
var test1 = testlist.FirstOrDefault( i => i.Contains( "Checking" ) ); // returns null
var test2 = testlist.Any( x => x.Contains( "Checking" ) ); // returns false
var test3 = testlist.TrueForAll( x => x.Contains( "Checking" ) ); // returns false
var test4 = testlist.TrueForAll( x => x.Children().Contains( "Checking" ) ); // returns false
var test5 = testlist.Any( x => x.Children().Contains( "Checking" ) ); // returns false
var test6 = testlist.All( x => x.Children().Contains( "Checking" ) ); // returns false
var test7 = testlist.Find( x => x.Contains( "Checking" ) ); // returns null
如何在不迭代列表并检查每个令牌的情况下搜索JToken列表中的值?
更新
以下是相关JSON源代码的剪辑:
{
...
"Rows":{
"Row":[
{
"ColData":[
{
"value":"Checking 11010000",
"id":"35"
},
{
"value":"232.40"
},
{
"value":""
}
]
},
{
"ColData":[
{
"value":"Savings 11020000",
"id":"36"
},
{
"value":"800.00"
},
{
"value":""
}
]
}
...
}
这是我的名单宣布的方式
var testlist = PriorMonth.SelectTokens( "$..ColData[*].value" ).ToList();
答案 0 :(得分:0)
您需要测试每个JToken
的值,而不是IEnumerable<JToken>
Contains
的匹配JToken
匹配var hasChecking = testlist.Any(jt => jt.Value<string>().Contains("Checking"));
的内容:
bind