У меня проблема с IsNull в LINQ:
db.WarehouseInputsDetails
.Select(p => new WarehouseInputDetailsViewModel
{
Id = p.Id
RemainingQuantity = p.Quantity - p.LoadingsDetails.Sum(n => n.Quantity)
}).AsQueryable();
p.LoadingsDetails.Sum(n => n.Quantity)
возможность NULL
.Я хочу получить такой результат:
select Id, IsNull(Sum(Quantity),0) as Quantity from LoadingsDetails
Я пробовал что-то вроде:
db.WarehouseInputsDetails
.Select(p => new WarehouseInputDetailsViewModel
{
Id = p.Id
RemainingQuantity = p.LoadingDetails.First() == null ? p.Quantity : p.Quantity - p.LoadingsDetails.Sum(n => n.Quantity)
}).AsQueryable();
Возвращает ошибки:
System.NotSupportedException: метод «Первый» может использоваться только в качестве конечной операции запроса.Попробуйте вместо этого использовать метод 'FirstOrDefault'.
Я пробовал что-то вроде этого:
db.WarehouseInputsDetails
.Select(p => new WarehouseInputDetailsViewModel
{
Id = p.Id
RemainingQuantity = (p.LoadingsDetails.Sum(n => n.Quantity) == DBNull.Value) ? p.Quantity : p.Quantity - p.LoadingsDetails.Sum(n => n.Quantity)
}).AsQueryable();
ИЛИ
db.WarehouseInputsDetails
.Select(p => new WarehouseInputDetailsViewModel
{
Id = p.Id
RemainingQuantity = p.LoadingsDetails.First().Quantity == DBNull.Value ? p.Quantity : p.Quantity - p.LoadingsDetails.Sum(n => n.Quantity)
}).AsQueryable();
Вернуть ошибки:
Оператор '==' нельзя применить к операндам типа 'десятичный' и 'DBNull'