Revenj.DatabasePersistence.Postgres.QueryGeneration.QueryComposition.QueryParts.BuildMemberPath C# (CSharp) Method

BuildMemberPath() private method

private BuildMemberPath ( MemberExpression me, bool nest ) : string
me System.Linq.Expressions.MemberExpression
nest bool
return string
        private string BuildMemberPath(MemberExpression me, bool nest)
        {
            var list = new List<string>();
            while (me != null)
            {
                list.Add(ConverterFactory.GetName(me.Member));
                var qse = me.Expression as QuerySourceReferenceExpression;
                var par = me.Expression as ParameterExpression;
                if (qse != null || par != null)
                {
                    var sb = new StringBuilder();
                    var name = qse != null ? qse.ReferencedQuerySource.ItemName : par.Name;
                    if (par != null && !string.IsNullOrEmpty(Context.Name))
                        sb.Append(Context.Name);
                    sb.Append('"').Append(name).Append('"');
                    list.Reverse();
                    foreach (var m in list)
                    {
                        if (nest)
                        {
                            sb.Insert(0, '(');
                            sb.Append(')');
                        }
                        sb.Append(".\"").Append(m).Append("\"");
                    }
                    return sb.ToString();
                }
                me = me.Expression as MemberExpression;
            }
            return null;
        }