using Newtonsoft.Json.Linq;
public static void Main()
var json1 = "[\r\n {\r\n \"Id\": 1,\r\n \"GroupId\": 5,\r\n \"Name\": {\r\n \"First\": \"Tony\",\r\n \"Last\": \"Stark\"\r\n },\r\n \"Phone\": \"1111111111\"\r\n },\r\n {\r\n \"Id\": 2,\r\n \"GroupId\": 5,\r\n \"Name\": {\r\n \"First\": \"Steve\",\r\n \"Last\": \"Rogers\"\r\n },\r\n \"Phone\": \"2222222222\"\r\n },\r\n {\r\n \"Id\": 3,\r\n \"GroupId\": 6,\r\n \"Name\": {\r\n \"First\": \"John\",\r\n \"Last\": \"Doe\"\r\n },\r\n \"Phone\": \"3333333333\"\r\n }\r\n]";
var json2 = "[\r\n {\r\n \"Id\": 5,\r\n \"Description\": \"Avengers\"\r\n },\r\n {\r\n \"Id\": 6,\r\n \"Description\": \"Others\"\r\n }\r\n]";
var mainArray = JArray.Parse(json1);
var groupArray = JArray.Parse(json2);
var targetArray = new JArray();
foreach (JObject o in mainArray)
var id = o.Value<int>("GroupId");
var target = groupArray.FirstOrDefault(r => r.Value<int>("Id") == id);
var newObj = new JObject();
var name = new JObject(new JProperty("Last",o["Name"]["Last"]));
newObj["GroupDescription"] = target["Description"];
targetArray.ToString().Dump();