2016-06-12 1 views
0

LINQ donnant une erreur en utilisant le dessous LINQà des entités LINQ valeurs décimales nulles de jointure externe

var data = (from p in _context.Products 
        from invp in _context.Inventories 
        .Where(inv=>inv.Product.ID== p.ID) 
        .DefaultIfEmpty()//left outer join 
        select new { p.ID, p.Name, p.BarCode, p.ProductCategory, p.MRP, p.RetailPrice,stock=invp.Stock }).ToList() ; 

La distribution à la valeur de type System.Decimal a échoué parce que la valeur matérialisée est nulle. Le paramètre générique du type de résultat ou la requête doit utiliser un type Nullable.

Si je supprime invp.stock de la sélection, il fonctionne, comment puis-je par défaut invp.stock à 0 si elle est nulle.

Répondre

0

Vous pouvez choisir comme ceci: remplacer

stock=invp.Stock 

avec

stock=invp.Stock ?? 0 
+0

Merci..Mais il donne erreur de compilation Op erateur '??' ne peut pas être appliqué aux opérandes de type 'decimal' et 'int' – user3658516

+0

Oh désolé, cela peut ne pas être accepté dans MVC 4. –

+0

Je pensais que 'case when' serait une meilleure solution dans SQL pour ce cas mais comme vous utilisez LINQ. Cela pourrait être un peu difficile. –

0

Il est décimal annulable et nous avons besoin de les jeter alors seulement il peut prendre la base de données null à C#

Stock = (décimal?) Invp.Stock