所以我需要计算一个JObject中有多少字段的值不是null或空格。我想出了下面的解决方案,工作正常。但是,我想知道是否有办法在LINQ中使用花哨的单行代码呢?
JObject jObject = JObject.Parse(@"{
""Name"":""Nisse"" ,
""Address"":""Road1"",
""Zip"":"""",
}");
var counter = 0;
foreach (var x in jObject)
{
if (!string.IsNullOrWhiteSpace(x.Value.ToString()))
counter++;
}
//Counter is now 2
下面检查每个属性,并返回非空属性
jObject.Children().AsEnumerable().ToList()
.Count(t=> !string.IsNullOrWhiteSpace( t.Values().ToList()[0].ToString()))
注意:此代码基于提供的对象结构。
你可以使用int counter = jObject.Children().Count(c => string.IsNullOrEmpty(((JProperty)c).Value.ToString()));
,但如果它更具可读性,请亲自看看。