using Newtonsoft.Json.Linq;
using System.Collections.Generic;
public static void Main()
{'PlayerId' : 21,'PlayerName': 'Y. Chahal'},
{'PlayerId' : 22,'PlayerName': 'Bhuvneshwar Kumar'},
{'PlayerId' : 23,'PlayerName': 'Jasprit Bumrah'},
{'PlayerId' : 24,'PlayerName': 'Hardik Pandya'},
{'PlayerId' : 25,'PlayerName': 'Ravindra Jadeja'},
{'PlayerId' : 26,'PlayerName': 'Mohammed Shami'}
string jsonBowlingstats = @"[
{'PlayerId' : 21, 'Wickets': 2},
{'PlayerId' : 22, 'Wickets': 1},
{'PlayerId' : 23, 'Wickets': 3},
{'PlayerId' : 26, 'Wickets': 1}
string jsonMomentum = @"[
{'Batsman': 'Virat Kholi', 'RunsScored': 50, 'StrikeRate': 78.30},
{'Batsman': 'M.S.Dhoni', 'RunsScored': 61, 'StrikeRate': 58.90},
{'Batsman': 'Rohit Sharma', 'RunsScored': 13, 'StrikeRate': 124.0}
string jsonIsRetired = @"{
{'PlayerName': 'Virat Kholi', 'IsRetired' : 1},
{'PlayerName': 'M.S. Dhoni', 'IsRetired' : 1},
{'PlayerName': 'Hardik Pandya', 'IsRetired' : 1},
{'PlayerName': 'Rohit Sharma', 'IsRetired' : 1},
{'PlayerName': 'Sachin Tendulkar', 'IsRetired' : 0},
{'PlayerName': 'Rahul Dravid', 'IsRetired' : 0},
{'PlayerName': 'Sourav Ganguly', 'IsRetired' : 0},
{'PlayerName': 'VVS Laxman', 'IsRetired' : 0}
dynamic listLineups = JsonConvert.DeserializeObject(jsonLineup);
dynamic listBowlingStats = JsonConvert.DeserializeObject(jsonBowlingstats);
dynamic listMomentum = JsonConvert.DeserializeObject(jsonMomentum);
dynamic listIsRetired = JsonConvert.DeserializeObject(jsonIsRetired);
foreach (var l in listLineups)
string player = l["PlayerName"];
foreach(var b in listBowlingStats)
if(l["PlayerId"] == b["PlayerId"])
Console.WriteLine("Player Name: " + player + " - Wickets: " + wck);
Console.WriteLine("\n\n--------------************************************------------------------------\n\n" );
List<int> lstmnt = new List<int>();
Dictionary<double, string> mydict = new Dictionary<double, string>();
foreach (var m in listMomentum)
double momentum = Convert.ToDouble(m["RunsScored"]) * Convert.ToDouble(m["StrikeRate"]);
mydict.Add(momentum, m["Batsman"].ToString());
var max = mydict.OrderByDescending(x => x.Key).First();
Console.WriteLine("Best batting momentum : " + max.Value + " - " + max.Key);
Console.WriteLine("\n\n--------------************************************------------------------------\n\n" );
var o1 = JObject.Parse(jsonIsRetired);
var query1 = o1.SelectTokens("PlayerList[?(@.IsRetired == 0)]").ToList();
var query2 = o1.SelectTokens("PlayerList[?(@.IsRetired == 1)]").ToList();
var o2 = JObject.Parse(jsonIsRetired);
var path = "PlayerList.IsRetired";
query1.SelectToken(path).Replace(o2.SelectToken(path));
var path2 = "PlayerList.IsRetired";
o1.SelectToken(path2).Replace(o2.SelectToken(path2));
foreach (var r in query1)
Console.WriteLine("{0}", r );
foreach (var r in listIsRetired)