如何计算用LINQ设置的JObject中有多少个字段?

时间:2019-02-13 10:29:14

标签: c# linq json.net

因此,我需要计算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

2 个答案:

答案 0 :(得分:1)

在下面检查每个属性,并返回不为空的属性

jObject.Children().AsEnumerable().ToList()
.Count(t=> !string.IsNullOrWhiteSpace( t.Values().ToList()[0].ToString()))

注意:此代码基于所提供的对象结构。

答案 1 :(得分:0)

您可以使用int counter = jObject.Children().Count(c => string.IsNullOrEmpty(((JProperty)c).Value.ToString()));,但自己看看它是否更具可读性。