У меня есть столбец типа decimal
в Db, который также можно обнулять. Что я хочу, если он равен нулю, тогда отобразится 0.0
. Для этого я пытаюсь следующий в моем заявлении LINQ:Как выбрать нулевой десятичный тип в LINQ?
CostPerUnit = od.CostPerUnit == null ? "0.0": od.CostPerUnit
Что дает ошибку:
Error 9 Type of conditional expression cannot be determined because there is no implicit conversion between 'string' and 'decimal'
Complete Заявлении также приведены для исх:
var rmas = (
from o in db.Orders
join od in db.OrderDetails on o.OrderNumber equals od.OrderNumber
join r in db.RMAs on o.OrderNumber equals r.OrderNumber
join rd in db.RMADetails on r.RMANumber equals rd.RMANumber
where (rd.WrongSKU == od.SKU)
join i in db.Inventory on od.SKU equals i.LocalSKU into grp
from g in grp.DefaultIfEmpty()
select new
{
r.RMANumber
,
r.Reason
,
o.Name
,
o.Company
,
o.Address
,
o.Address2
,
o.City,
o.State
,
o.Country
,
o.Email
,
o.Zip
,
o.Phone
,
o.ShipName,
o.ShipCompany
,
o.ShipAddress
,
o.ShipAddress2
,
o.ShipCity
,
o.ShipCountry
,
o.ShipState
,
o.ShipPhone
,
o.ShipZip
,
o.OrderNumber
,
o.ShippingTotal
,
o.BalanceDue
,
r.Status
,
OrderDate = o.OrderDate
,
DateIssued = r.DateIssued
,
SerialNumbers = rd.SerialNumbers ?? ""
,
o.SourceOrderID
,
od.SKU
,
od.ItemNumber
,
QTYOrdered = od.QuantityOrdered
,
od.QuantityReturned
,
rd.QuantityAuthorized
,
RMA_ItemNumber1 = rd.ItemNumber
,
rd.Price
,
rd.WrongSKU
,
g.Text1
,
CostPerUnit = od.CostPerUnit == null ? "0.0": od.CostPerUnit
}
).Take(50).ToList();
1) Используйте десятичный литерал '0m' или' 0.0m' вместо строка '" 0.0 "' 2) Вы можете использовать оператор нулевой коалесценции '??' вместо условного оператора '? : '. Объединив эти изменения, вы можете написать 'od.CostPerUnit ?? 0.0m'. – CodesInChaos
Когда вы говорите, что хотите «отобразить» '0.0', почему бы просто не обрабатывать это в пользовательском интерфейсе, а не сложный оператор? – DavidG