I have spent a lot of time to find a solution for my problem.
In this example, I have 2 records in SetNavRecords array. The first one is "Artikelnummer" : "21700" and the second one is "Artikelnummer" : "21701"
Each record have an array "OfflineVerkaufspreis".
Important is for me the field "Location_Code" in "OfflineVerkaufspreis" I only need the hole informations for one filtered Location Code.
How can I select the data for one Location Code, for example "MH"?
I am using C# and the Newtonsoft Class for JSON parsing.
I have tried some versions with LINQ but without success.
{ "SetNavRecords" : [ { "Artikelbeschreibung" : "Trikot \"Home\" 2012/2013",
"Artikelbeschreibung2" : "weiß",
"Artikelnummer" : "21700",
"Artikelrabattgruppe" : "MERCH",
"Gutschein" : false,
"MwStProduktgruppe" : "VOLLNEU",
"OfflineVerkaufspreis" : [ { "Allow_Line_Discount" : true,
"Date" : "2014-05-16T00:00:00",
"Item_No" : "21700",
"Location_Code" : "BP",
"Unit_Price" : 5.0
},
{ "Allow_Line_Discount" : true,
"Date" : "2014-05-16T00:00:00",
"Item_No" : "21700",
"Location_Code" : "MH",
"Unit_Price" : 5.0
},
{ "Allow_Line_Discount" : true,
"Date" : "2014-05-16T00:00:00",
"Item_No" : "21700",
"Location_Code" : "RY",
"Unit_Price" : 5.0
}
]
},
{ "Artikelbeschreibung" : "Autogrammtrikot 2012/2013",
"Artikelbeschreibung2" : "weiß",
"Artikelnummer" : "21701",
"Artikelrabattgruppe" : "MERCH",
"Gutschein" : false,
"MwStProduktgruppe" : "VOLLNEU",
"OfflineVerkaufspreis" : [ { "Allow_Line_Discount" : false,
"Date" : "2014-05-16T00:00:00",
"Item_No" : "21701",
"Location_Code" : "BP",
"Unit_Price" : 69.99
},
{ "Allow_Line_Discount" : false,
"Date" : "2014-05-16T00:00:00",
"Item_No" : "21701",
"Location_Code" : "MH",
"Unit_Price" : 69.99
},
{ "Allow_Line_Discount" : false,
"Date" : "2014-05-16T00:00:00",
"Item_No" : "21701",
"Location_Code" : "RY",
"Unit_Price" : 69.99
}
]
}
] }
Here is my problem:
var tmpResult = JObject.Parse(File.ReadAllText(FileName));
var resultObject = tmpResult["SetNavRecords"]
.Values("OfflineVerkaufspreis")
.Values<JObject>()
.Where(n => n["Location_Code"].Value<string>() == "MH");
The filter works fine but the data is incomplete in tmpResult. I only get the data in "OfflineVerkaufspreis". I need the root data too.
Has anybody an idea?
Thanks!
.Where(n => n["OfflineVerkaufspreis"]["Location_Code"] ...(i believe, i haven't tested it)OfflineVerkaufspreiswhen it says.Values("OffilineVerkaufspreis"). Take out that and just do a where against the tmpResult["SetNavRecords"]. Untested, but that should work, just figure out the exact syntax.