我试图创建使用表达式,看起来像这样的可重复使用的方法创建一个表达式:C#表达式 - 从另一种表达
Expression<Func<Order, bool>> CreateExpression(Expression<Func<Order, int>> parameter, FilterOperator operator, int value)
所以,我可以这样使用它:
IQueryable<Order> orders = db.Orders;
var filtered = orders.Where(CreateExpression(o => o.OrderID, FilterOperator.GreaterThan, 100));
我不知道如何编写该方法。我如何编写一个方法来为我创建这个表达式?
我需要能够做这样的事情:
if(operator == FilterOperator.GreaterThan)
return m => m.OrderID > value;
else if(operator == FilterOperator.LessThan)
return m => m.OrderID < value;
但我想使用在通过直接使用订单ID,而不是表达。我怎样才能做到这一点?
那岂不是更容易只是做'orders.Where(o => o.OrderID> 100)'?如果我知道为什么这不适合你,我最好提出建议。 –
我不想这样做,因为我想要将相同的逻辑应用于OrderID,OrderQuantity等,并且也适用于GreaterThan,LessThan,GreaterThanEqualTo,EqualTo,NotEqualTo等等 – Dismissile
但是lambda表达式非常简洁,您可以简单地创建新的与你想要的条件。 –