2012-05-14 88 views
0

這裏是我的代碼:鑄造一個值,以十進制

var finiGames = myRepos.Games 
         .Where(x => x.StatusGameId == (int)StatusGameEnum.Finish 
           && x.EndDateTime > DateTime.Today) 
         .DefaultIfEmpty(); 
//error line 
decimal? sum = finiGames.Sum(x => x.WinCost); 

我得到的錯誤:

錯誤轉換蒙上了價值型「十進制」,因爲materializuemoe 值爲null。類型參數的總體結果或請求 使用允許值爲null的類型。

什麼是得到decimal?的正確方法?

回答

4

您需要的WinCost轉換爲nullabledecimalSum

decimal? sum = finiGames.Sum(x => (decimal?)x.WinCost); 
+0

如果WinCost首先爲空,這可以避免嗎?在OP中擁有Game對象可能在這方面有所幫助。 – Killnine

+0

@Killnine是的,如果'WinCost'列是'空',則不需要投。 – Magnus

0
decimal sum = ((decimal?)finiGames.Sum(x => x.WinCost)) ?? 0; 
0

嘗試添加ToList()finiGames內。它可能會導致性能下降,但EF可能無法處理數據(SQL)層中的轉換。