2012-05-30 4 views
15

この問合せに問題があり、エラーが発生しています。実体化された値がNULLであるため、値の型 '10進'へのキャストが失敗しました

var TotalToDatePayable = ( from ori in db.GetAll<WMPORI>() 
          where ori.CTMSysID == ctmSysId 
          select ori.ExB4Taxes).Sum(); 

私はanother similar questionからのコードの下にしようとしたが、それは私の問題を解決しませんでした:

var TotalToDatePayable = (Decimal?)( from ori in db.GetAll<WMPORI>() 
             where ori.CTMSysID == ctmSysId 
            select ori.ExB4Taxes).Sum()) ?? 0; 
+0

これが動作している:(db.GetAll (中ORIから) ori.CTMSysID == ctmSysId 選択ori.ExB4Taxes)VaRのTotalToDatePayable = .DefaultIfEmpty(0).SUMを()。 – Developer

+0

@DmitryBychenko私は、インデントの種類が目的Cに独占的だと思った。今は悲しい。 – Rawling

+0

@ Rawling 9:この種の字下げはSQL(Linqが質問でエミュレートする)では典型的なものです。それが私にスペースを追加する理由でした。 –

答えて

23

あなたは、クエリ内のdecimal?ori.ExB4Taxesをキャストする必要があります。

var TotalToDatePayable = (from ori in db.GetAll<WMPORI>() 
          where ori.CTMSysID == ctmSysId 
          select (Decimal?) ori.ExB4Taxes).Sum() ?? 0; 
+0

クエリの始めに、作業の完璧さ以外の括弧を1つだけ追加する必要があります。ありがとう。 – Developer

関連する問題