0

I have a json file that looks something like :

[
  {
    "picklist_typ": "Address Assessment Code",
    "picklist_typ_key": null,
    "picklist_typ_cd": "DELIVERABLE",
    "picklist_typ_dsc": "Address is deliverable : Deliverable",
    "ref_order": null,
    "dw_trans_ts": "2016-07-17T12:59:15"
  },
  {
    "picklist_typ": "Address Assessment Code",
    "picklist_typ_key": null,
    "picklist_typ_cd": "NOT-DELIVERABLE",
    "picklist_typ_dsc": "Address is not deliverable : Undeliverable",
    "ref_order": null,
    "dw_trans_ts": "2016-07-17T12:59:15"
  },
  {
    "picklist_typ": "Address Type",
    "picklist_typ_key": null,
    "picklist_typ_cd": "B",
    "picklist_typ_dsc": "Billing Address",
    "ref_order": null,
    "dw_trans_ts": "2016-07-17T12:59:15"
  },
  ....

Now , I have an object that looks like :

public class GroupMembershipWriteOutput
{
    public long? groupKey { get; set; }
    public string transOutput { get; set; }
    public long? transKey { get; set; }
    public string groupCode {get;set;}
    public string groupName {get;set;}
}

And it has a value accordingly :

    groupKey:121
    transOutput: "Success"
    transKey:998546
    groupCode:"My Group Test"
    groupName: "My Created Group Test"

What I want to is ..

I want to read the JSON file and if any entry's picklist_typ_key matches the incoming object's groupKey , I want to update only that object's picklist_typ_cd with groupCode and picklist_typ_dsc with groupName.

I could read the data from JSON as ...

        if(gmwo.transOutput.ToUpper() == "SUCCESS")
        {
            string json = System.Configuration.ConfigurationManager.AppSettings["PicklistDataPath"];
            List<PicklistData> deserializedPicklistData = JsonConvert.DeserializeObject<List<PicklistData>>(System.IO.File.ReadAllText(json));

            //find the object that matches

            IEnumerable<PicklistData> results = deserializedPicklistData.Where(item => item.picklist_typ_key == gmwo.groupKey.ToString());

            if(results != null)
            {
                **//What is the logic to update only that entry in the json file** 
            }

Please help me do it .

StrugglingCoder
  • 4,781
  • 16
  • 69
  • 103

1 Answers1

0

Could you try the LINQ "All" chain? Something like this:

IEnumerable<PicklistData> results = deserializedPicklistData
  .Where(item => item.picklist_typ_key == gmwo.groupKey.ToString())
  .All(selectedItem => someFunction(selectedItem));

:
:

someFunction(PicklistData myPick) {
:
}
Paurian
  • 1,372
  • 10
  • 18