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;
}