繁体   English   中英

C#中的JSON.net数组差异

[英]JSON.net Array diff in C#

我有两个数组

"commanditaires_data": [
    {
        "id": "254",
        "level": 78
    },
    {
        "id": "255",
        "level": 22
    }
]

"commanditaires_data": [
    {
        "id": "254",
        "level": 78
    }, {
        "id": "255",
        "level": 22
    },
    {
        "id": "255",
        "level": 22
    }
]

我无法在第一个数组中获取丢失的项目。

我需要在这两个数组之间做一个差分。

我尝试使用Except(),但我向我发送了第一个数组的每个项目

我正在使用JSON.NET,所以我的数组变量是:

var srcObjs = source.Children().ToList().OfType<JObject>();
var tarObjs = target.Children().ToList().OfType<JObject>();

var diff = tarObjs.Except(src.objs);

=>它向我发送了tarObjs中的所有项目。

我需要处理很多情况:

 If srcObjs.Count() < tarObjs.Count() //Added item(s)
 If srcObjs.Count() > tarObjs.Count() // Deleted item(s)
 Else //Edited Item(s)

我也尝试使用linq,但没有成功

public class CommanditairesEqualityComparer: IEqualityComparer<Commanditaires>
    {

        public bool Equals(Commanditaires first, Commanditaires second)
        {
            if (first== null && first== null)
                return true;

            return first.Id == second.Id
                && first.Level == second.Level;
        }    

        public int GetHashCode(Commanditaires model)
        {
            return model.Id.GetHashCode() + model.Level.GetHashCode();
        }
    }

接着

var comparer = new CommanditairesEqualityComparer();
var distinctItems = firstList.Except(secondList, comparer );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM