2017-01-21 10 views
-1

Мой методКак получить имена свойств из дерева выражений?

public Task<Product> GetProduct(int productId, params Expression<Func<Product, object>>[] properties) 
    { 

     var member = properties[0].Body as MemberExpression; 
     var v = member.Member.Name; 

    } 

я могу получить одно имя свойства, используя соответствующий индекс

var member = properties[0].Body as MemberExpression; 
var v = member.Member.Name; 

Но это не то, что я хочу. Я хотел бы получить все имена свойств и string.join их с linq.

Как я могу это сделать?

+0

В чем проблема? Если вы знаете, как получить (выбрать) одно имя свойства, вы должны легко получить все, используя простой 'Select' - довольно простой оператор LINQ. –

ответ

2

Используйте оператор as, а затем отфильтруйте те, которые не были объектами. Если вы используете кастинг, он будет генерировать исключение, но as просто вернет null.

var all =  
string.Join(", ", properties 
.Select(x => 
    x.Body as MemberExpression)) 
.Where(x => x != null) 
.Select(x => 
    x.Member.Name)); 
+0

Спасибо, кажется, достаточно близко, но он возвращает только первое имя параметра – OrElse

+0

Возможно, это потому, что вы передаете одно выражение методу. Вы должны передать столько выражений, сколько вам нужно. – CodingYoshi