【发布时间】:2013-06-05 13:41:16
【问题描述】:
我有一个计算属性
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))) );
}
有什么想法吗?
【问题讨论】:
标签: linq entity-framework linq-to-entities expression