经过数小时的研究,我仍然无法缩短此查询,但肯定有办法......我当前的查询看起来像这样
decimal Cost = db.U_MBP
.Where(w => w.Model == ModelNumber)
.Select(s => s.Cost ?? 0)
.FirstOrDefault();
double Margin = db.U_MBP
.Where(w => w.Model == ModelNumber)
.Select(s => s.Margin ?? 0)
.FirstOrDefault();
decimal BasePrice = Cost / (decimal)Margin;
我最初试图完成的是一个 all in 1 linq 语句,类似于
decimal BasePrice = db.U_MBP
.Where(w => w.Model == ModelNumber)
.Select(s => s.Cost ?? 0 / (decimal)s.Margin ?? 0)
.FirstOrDefault();
但我无法克服演员表错误。
LINQ to Entities 查询不支持强制转换为小数,因为无法推断出所需的精度和小数位数信息。
你们中的任何人都可以帮忙吗?
在 D 的帮助下回答
decimal BasePrice = (decimal)(db.Utilities_ModelsBasePrices
.Where(w => w.Model == ModelNumber)
.Select(s => (s.Margin == null || s.Margin == 0) ? (double)0m :
((double)s.Cost) / (double)s.Margin)
.FirstOrDefault());