我正在比较两个Newtonsoft JArrays。我遍历第一个,然后使用Linq查找第二个JArray是否具有具有相同id和sortOrder值的对象。仅当它们不同时,才应执行UpdateData方法。我已经在下面封装了代码和两个JArray数据。根据数据,由于第一项在两个JArray之间具有相同的id和sortOrder,因此不应调用UpdateData方法,并且foundItem应该是有效的对象。但它改为null,并调用UpdateData()方法。由于第二个和第三个项目的sortOrder不同,因此仅应调用UpdateData()方法。
private void CheckSaveDataLogic(JArray featuredProductsData,JArray originalFeaturedProductsData)
{
foreach (JObject item in featuredProductsData)
{
if(originalFeaturedProductsData != null)
{
var foundItem = originalFeaturedProductsData
.FirstOrDefault(x => x.Value<int>("Id") ==
Convert.ToInt32(item.Getvalue("id")) && x.Value<int>("sortOrder") ==
Convert.ToInt32(item.Getvalue("sortOrder")));
if(foundItem == null)
{
UpdateData(item,isFeatured);
}
}
}
}
featuredProductsData JArray:
{[
{
"id": "2190","sortOrder": 1
},{
"id": "2436","sortOrder": 2
},{
"id": "1874","sortOrder": 3
}
]}
originalFeaturedProductsData JArray:
{[
{
"id": "2190","sortOrder": 3
}
]}