2012-05-30 12 views
15

Ich habe ein Problem mit dieser Abfrage, das einen Fehler verursacht.Die Umwandlung zum Werttyp 'Dezimal' ist fehlgeschlagen, da der materialisierte Wert null ist

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

Ich habe versucht, unter Code von another similar question aber das hat mein Problem nicht lösen:

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

Dies funktioniert: var TotalToDatePayable = (von ori in db.GetAll () wo ori.CTMSysID == ctmSysId select ori.ExB4Taxes) .DefaultIfEmpty (0) .sum(); – Developer

+0

@DmitryBychenko Ich dachte, diese Art der Einrückung war exklusiv für Objective C. Jetzt bin ich traurig. – Rawling

+0

@Rawling 9: Diese Art von Einrückung ist typisch in SQL (die Linq in der Frage emuliert). Das war der Grund für mich, Räume hinzuzufügen. –

Antwort

23

Sie müssen ori.ExB4Taxes-decimal? in der Abfrage werfen.

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

Sie müssen am Anfang der Abfrage nur noch 1 Klammer hinzufügen, die nicht perfekt funktioniert. Vielen Dank. – Developer

Verwandte Themen