2016-04-16 4 views
0

Ich habe zwei TabellenC# links whith mehrere Tabellen verbinden

Tabelle A (2 Felder. CODART und DES) Tabelle B (2 Felder. CODART UND Preven)

Ich muss mit 2 verbinden machen links Tabellen und json zurückgeben. Die Tabelle B, wenn keine Datensätze haben, bekomme ich diesen Fehler.

(((Die Besetzung zu Werttyp ‚System.Decimal‘ ist fehlgeschlagen, weil die materialisierte Wert null ist. Entweder ist der generische Parameter des Ergebnistypen oder die Abfrage muss ein Nullable Type verwenden.)))

Ich benutze diese Code

 var lstart = (from art in db.tableA 
         where art.CODART == 'uno' 
         join tfa in db.tableB on art.CODART equals tfa.CODART into ArtTfa from AA in ArtTfa.DefaultIfEmpty() 
         select new 
         { 
          art.CODART, 
          art.DES, 
          AA.PREVEN 
         }); 

     return Json(new { lista = lstart }, JsonRequestBehavior.AllowGet); 

Wissen Sie warum? Danke.

+0

Versuchen Sie System.Decimal? : Das Fragezeichen erlaubt Nullen genau wie int? – jdweng

+0

Danke, jdweng. Du hast recht. Ich sehe es vorher nicht. – IcuScc

Antwort

0

Es tut mir leid, für meine Frage. Ich habe die Lösung gefunden.

ist das Feld mit (Dezimal?) Vor dem Feld zu werfen.

Der neue diesen Code

 var lstart = (from art in db.tableA 
         where art.CODART == 'uno' 
         join tfa in db.tableB on art.CODART equals tfa.CODART into ArtTfa from AA in ArtTfa.DefaultIfEmpty() 
         select new 
         { 
          art.CODART, 
          art.DES, 
          (Decimal?)AA.PREVEN 
         }); 

     return Json(new { lista = lstart }, JsonRequestBehavior.AllowGet); 

Vielen Dank.