我有一个类方法:方法用getPrice()不能被翻译成商店表达
public static class ProductExtensions {
public static decimal GetPrice(this Product product, Guid rateId) {
return product.Prices
.Where(p => p.Rate.RateId == rateId)
.Select(b => b.UnitPrice)
.DefaultIfEmpty(product.UnitPrice)
.First();
}
}
和表达式的评估
decimal? total =
(from cartItems in storeDB.Carts
where cartItems.CartId == shoppingCartId
select (int?)cartItems.Count * cartItems.Product.GetPrice(store.RateId))
.Sum();
抛出异常:
LINQ实体无法识别方法'System.Decimal GetPrice(System.Guid)'方法,并且此方法不能转换为存储表达式。
我使用在其他地方这个非常相同的代码和工作得很好:
// Get the price for given rate
decimal price = product.GetPrice(rate.RateId);
任何想法如何解决呢?
请注意,对于结果集中的每个项目,这将在GetPrice中执行一次子查询 –
为什么-1?答案中有什么不对吗? –