2016-06-12 6 views
0

LINQ дает ошибку при использовании ниже LINQLINQ к объектам десятичную нулевые значения из внешнего соединения

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() ; 

Актерский к типу значения System.Decimal не удалось, так как материализованная значение равно нулю. Либо общий параметр типа результата, либо запрос должны использовать тип с нулевым значением.

Если я удалю invp.stock из выбранного его действия, как я могу по умолчанию invp.stock равняться 0, если он равен нулю.

ответ

0

Вы можете выбрать, как это: заменить

stock=invp.Stock 

с

stock=invp.Stock ?? 0 
+0

Спасибо..Но он дает ошибку компилятора Op erator '??' не может применяться к операндам типа «decimal» и «int» – user3658516

+0

О, извините, это не может быть принято в текущем MVC 4. –

+0

Я думал, что «случай, когда» будет лучшим решением в SQL для этого случая, но поскольку вы используете LINQ. Это может быть немного сложно. –

0

Существует обнуляемым десятичный, и мы должны изгонять их только тогда он может взять базу данных нуль на C#

Stock = (decimal?) Invp.Stock