如何为实体框架制作存储表达式



假设我有这样一个查询

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

相关内容

  • 没有找到相关文章

最新更新