private ExecutionPlanRoot InitializeRoot()
        {
            ExecutionPlanRoot root = new ExecutionPlanRoot();

            foreach (var plan in jObject.SelectTokens("..planTree"))
            {
                root.StartupCost = plan.First.First.SelectToken("startup_cost").Value <decimal>();
                root.TotalCost   = plan.First.First.SelectToken("total_cost").Value <decimal>();
            }
            foreach (var plan in jObject.SelectTokens("..lefttree"))
            {
                if (plan.ToString() != "<>")
                {
                    var node = new ExecutionPlanNode();
                    node.StartupCost = plan.First.First.SelectToken("startup_cost").Value <decimal>();
                    node.TotalCost   = plan.First.First.SelectToken("total_cost").Value <decimal>();
                    root.Plans.Add(node);
                }
            }
            foreach (var plan in jObject.SelectTokens("..rightrree"))
            {
                if (plan.ToString() != "<>")
                {
                    var node = new ExecutionPlanNode();
                    node.StartupCost = plan.First.First.SelectToken("startup_cost").Value <decimal>();
                    node.TotalCost   = plan.First.First.SelectToken("total_cost").Value <decimal>();
                    root.Plans.Add(node);
                }
            }
            return(root);
        }
        private ExecutionPlanRoot InitializeRoot()
        {
            ExecutionPlanRoot root = new ExecutionPlanRoot();
            var rootPlan           = jObject.SelectToken("..Plan");

            root.StartupCost = rootPlan.SelectToken("['Startup Cost']").Value <decimal>();
            root.TotalCost   = rootPlan.SelectToken("['Total Cost']").Value <decimal>();
            var indexToken = rootPlan.SelectToken("['Index Name']");

            if (indexToken != null)
            {
                root.IndexName = indexToken.Value <String>();
                if (root.IndexName.StartsWith("\"")) // index name is in "
                {
                    root.IndexName = root.IndexName.Substring(1);
                    root.IndexName = root.IndexName.Substring(0, root.IndexName.Length - 1);
                    root.IndexName = root.IndexName.Trim();
                }
            }
            foreach (var plans in jObject.SelectTokens("..Plans"))
            {
                foreach (var plan in plans.Children())
                {
                    ExecutionPlanNode node = new ExecutionPlanNode();
                    node.StartupCost = plan.SelectToken("['Startup Cost']").Value <decimal>();
                    node.TotalCost   = plan.SelectToken("['Total Cost']").Value <decimal>();
                    var indexToken2 = plan.SelectToken("['Index Name']");
                    if (indexToken2 != null)
                    {
                        node.IndexName = indexToken2.Value <String>();
                        if (node.IndexName.StartsWith("\"")) // index name is in "
                        {
                            node.IndexName = node.IndexName.Substring(1);
                            node.IndexName = node.IndexName.Substring(0, node.IndexName.Length - 1);
                            node.IndexName = node.IndexName.Trim();
                        }
                    }
                    root.Plans.Add(node);
                }
            }
            return(root);
        }