我有2个反序列化为ac#对象的JSON对象
JSON对象都看起来像这样
{
"obj2": {
"booleanVal": true,
"data": "me",
"foo": {
"Key": "",
"booleanVal": false,
"dataValue": "foo"
},
"Ide": {
"booleanVal": true,
"foo2": {
"booleanVal": false,
"dataValue": "foo"
}
}
}
{
"obj1": {
"booleanVal": true,
"data": "me",
"foo": {
"Key": "",
"booleanVal": false,
"dataValue": "foo"
},
"Ide": {
"booleanVal": true,
"foo2": {
"booleanVal": false,
"dataValue": "foo"
}
}
}
我想循环遍历C#对象obj1,检查booleanVal以将其与obj2的booleanval进行比较,我似乎无法找出一种通过该对象到达最后一个嵌套对象到达booleanVal的好方法,到目前为止我一直在尝试是这样的
private void loop(obj1, obj2)
{
foreach (var p in obj1)
{
foreach (var c in obj2)
{
if (p.booleanVal != c.booleanVal)
{
Console.Error.WriteLine("illegal");
}
}
}
}
您可以使用linq。
在.cs文件顶部添加以下行。
using System.Linq;
有很多可能的方法可以使用linq轻松地遍历列表。下面的两个示例将为您提供有关如何到达最后一个嵌套对象并进行比较的想法。也许您需要根据需要对其进行修改。
示例1:在每个级别分别匹配booleanVal
foreach (var obj1Item in obj1)
{
if(obj2.Any(obj2Item => obj2Item.booleanVal == obj1Item.booleanVal))
{
// first level booleanVal matched
}
if(obj2.Any(obj2Item => obj2Item.foo.booleanVal == obj1Item.foo.booleanVal))
{
// second level booleanVal matched
}
if(obj2.Any(obj2Item => obj2Item.Ide.booleanVal == obj1Item.Ide.booleanVal))
{
// second level booleanVal matched
}
if(obj2.Any(obj2Item => obj2Item.Ide.foo2.booleanVal == obj1Item.Ide.foo2.booleanVal))
{
// third level booleanVal matched
}
}
示例2:在所有级别上同时匹配booleanVal
foreach (var obj1Item in obj1)
{
if(obj2.Any(obj2Item => obj2Item.booleanVal == obj1Item.booleanVal &&
obj2Item.foo.booleanVal == obj1Item.foo.booleanVal &&
obj2Item.Ide.booleanVal == obj1Item.Ide.booleanVal &&
obj2Item.Ide.foo2.booleanVal == obj1Item.Ide.foo2.booleanVal))
{
// booleanVal at all levels matched
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句