2017-05-29 23 views
3

我无法围绕如何通过将表达式指定为参数来管理选择查询中的列。LINQ to Entities选择具有表达式参数的列

Method A(IQueryable<Order> query) 

里面方法A我想指定选择的列,所以我没有得到所有列向右走,像这样:

query.Select(x => new { x.OrderNumber, x.Payment, x.Customer }) 

这很容易,如果我直接在方法A指定此,但我想使用参数传递信息。 我试图用这样的表达:

Expression<Func<Order, dynamic>> columns 

但我不能得到它的工作,因为我只能指定一个列,其中我调用方法A,就像这样:

MethodA(query, (x) => x.OrderNumber); 

我怎样才能指定多个属性?

回答

0

如果您只是想传递列名称,为什么不将字符串作为数组传递?

void MethodA(params string[] columns)

+0

我想用LINQ的方式传递属性。 我基本上想传递query.Select()表达式。 – mp1990

2

我找到了解决方案。 我只是必须指定一个匿名类型是这样的:

MethodA(query, order => new { order.OrderNumber, order.Payment }) 

现在我可以在我的选择表达通过其他方法。