多小時的研究後,我仍然不能得到這個查詢縮短,但肯定是有辦法......我現在的查詢看起來像這樣我怎樣才能使這個LINQ的聲明更復雜的
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;
我最初試圖完成的是一個所有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查詢中不支持投射到Decimal。
你們能幫忙嗎?
答案與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());
你能否發佈你正在得到的確切錯誤?另外,'(十進制)s.Margin ?? 0'是一個零等於零的錯誤發生等待發生...... –
你不需要在括號中將'??'放在最後一個代碼片段的正確關聯性中嗎? – akonsu
@AbeMiessler是的,我只是試圖讓它首先工作,但錯誤:鑄造到十進制不支持LINQ to Entities查詢,因爲無法推斷出所需的精度和比例信息** – Pakk