public static List <TProperty> GetNodeProperties <TQuery, T, TProperty>(this IExecutionResult executionResult,
                                                                                Expression <Func <TQuery, object> > queryExpression, Expression <Func <T, TProperty> > propertyExpression)
        {
            var connectionResult = executionResult.GetConnectionResult(queryExpression);

            var nodeProperties = new List <TProperty>();

            foreach (var connectionResultNode in connectionResult.Edges)
            {
                nodeProperties.Add((TProperty)connectionResultNode.Node.GetProperty(propertyExpression.ToPropertyName()));
            }
            return(nodeProperties);
        }
        public static List <DateTime?> GetNodeDateTimeProperties <TQuery, T>(this IExecutionResult executionResult,
                                                                             Expression <Func <TQuery, object> > queryExpression, Expression <Func <T, DateTime?> > propertyExpression)
        {
            var connectionResult = executionResult.GetConnectionResult(queryExpression);

            var nodeProperties = new List <DateTime?>();

            foreach (var connectionResultNode in connectionResult.Edges)
            {
                var dateTimeString = connectionResultNode.Node.GetProperty(propertyExpression.ToPropertyName())?.ToString();
                if (dateTimeString == null)
                {
                    nodeProperties.Add(null);
                }
                else
                {
                    var dateTime    = DateTime.Parse(dateTimeString);
                    var utcDateTime = dateTime.ToUniversalTime();
                    nodeProperties.Add(utcDateTime);
                }
            }
            return(nodeProperties);
        }