我有一个计算好的属性
public decimal Avaibility
{
get{ return l => l.Start - l.Uses.Sum(u => u.Amount);}
}
所以我不能将此属性包含在 linq 到实体的任何谓词中
Products.Where(l => l.Avaibility> 0);
我目前的解决方案是在我需要的任何地方重复 lambda,但这是不可维护的,我想达到类似
private Expression AvaibilityCalculation = l => l.Start - l.Uses.Sum(u => u.Amount);
public decimal Avaibility
{
get{ return AvaibilityCalculation.Compile()(this/*product*/) ;}
}
public Product ProductsWithStock()
{
//for l => l.Start - l.Uses.Sum(u => u.Amount) > 0
return Products.Where(AvaibilityCalculation.GreaterThan(Expression.Constant(0, typeof(decimal))) );
}
任何想法?