我有两个数组
"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);
=&GT;它发送给我tarObjs中的所有项目。
我需要处理很多案件:
If srcObjs.Count() < tarObjs.Count() //Added item(s)
If srcObjs.Count() > tarObjs.Count() // Deleted item(s)
Else //Edited Item(s)
我也试过使用linq但没有成功
答案 0 :(得分:2)
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 );