假设我有这样一个查询
context.MyClass.ListSubClasses.Sum(x=> x.UseNetPrice ? x.NetPrice : x.TotalPrice);
这只是一个例子,我的lambda表达式要复杂得多,我在几个地方使用它。我要做的是
context.MyClass.ListSubCalsses.Sum(x=>x.Price());
我的方法是:
public static double? Price(IQueryable<MyClass> class)
{ return class.Select(x=> x.UseNetPrice ? x.NetPrice : x.TotalPrice);}
我得到错误。你能帮我举个例子如何写存储表达式吗?
您可以使用PredicateBuilder在helper方法中创建完整的lambda表达式,然后只返回该表达式。
那么,你可以这样做:
context.YourEntities.Where(HelperClass.GetPricePredicate());
你的GetPricePredicate()
可以是这样的:
public Expression<Func<YourEntity, bool>> GetPricePredicate()
{
var myPredicate = PredicateBuilder.True<YourEntity>();
myPredicate = myPredicate.And(y => y.idTenant == tenantID);
myPredicate = myPredicate.And(y => y.idCategory == 1);
return myPredicate;
}