using Newtonsoft.Json.Linq;
delegate string SortJObj(JToken obj);
public static void Main()
""col2"": { ""name"": ""bar""}
""col2"": { ""name"": ""quux""}
""col2"": { ""name"": ""bag""}
JArray array = JArray.Parse(json);
string skey = "col2.name";
string[] sortKeyNames = skey.Split('.');
SortJObj sortJObj = delegate(JToken obj)
var tempObj = obj.ToObject<JToken>();
foreach (var key in sortKeyNames)
if (tempObj[key] != null)
JArray sorted = new JArray(array.OrderBy(
Console.WriteLine(sorted.ToString(Formatting.Indented));