LINQ表达式我有一个计算的属性是比较LAMBDA结果以恒定
public decimal Avaibility
{
get{ return l => l.Start - l.Uses.Sum(u => u.Amount);}
}
,所以我不能包括任何谓词LINQ到实体此属性像
Products.Where(l => l.Avaibility> 0);
我目前的解决方案任何地方,我需要它,但不是维护重复拉姆达,我要像达到什么
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性能,我需要它更容易使用和可保持性 – cyberdantes