#c# #linq #asp.net-core #entity-framework-core
Вопрос:
У меня есть запрос linq в цикле. Я запрашиваю по диапазону дат, в каком-то диапазоне дат все работает и возвращается нормально. Но в каком-то другом диапазоне дат я получил «Обнуляемый объект должен иметь значение.
Я обнаружил, что некоторые значения в таблицах равны нулю
Некоторые ответы на StackOverflow предлагали игнорировать, когда столбцы пусты.
Но в моем случае я не могу игнорировать это, потому что столбец равен нулю.
Вот мой вопрос
var cargoActivityResponse = await (from ca in context.CargoActivities.Where(cargo => cargo.ReservationId == task[i].BerReservationId)
from cargo in context.CargoActivityTypes
where ca.ActivityTypeId == cargo.Id
from category in context.CargoCategories
where ca.CargoCategoryId == category.Id
from routes in context.TradeRoutes
where ca.TradeRouteId == routes.Id
select new
{
ActivityType = cargo.Name,
Cargo = category.Name,
TradeRoute = routes.Name,
Quantity_Num = ca.Quantity_Num,
Quantity_UOM = ca.Quantity_UOM,
}).ToListAsync();
Как можно вернуть все, даже если какой-то столбец равен нулю или возвращает значение null?
Трассировка стека, если это будет полезно
at System.ThrowHelper.ThrowInvalidOperationException_InvalidOperation_NoValue()
at System.Nullable`1.get_Value()
at Port.Info.Business.Billings.<BillingData>d__4.MoveNext() in C:UsersjohnsourcereposPort.InfoPortInfoBusinessBillings.cs:line 155
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at Port.Info.Controllers.BillingsController.<BillingData>d__5.MoveNext() in C:UsersjohnsourcereposPort.InfoPortInfoControllersBillingsController.cs:line 49
Комментарии:
1. Вы создали схему бд с помощью кода сначала?
2. Да, код-первый
3. 1)
task[I]
, может быть нулевым 2) Есть ли какая-либо причина делать это в цикле? Вы можете получить все с помощью одного запроса.4. У меня уже есть запрос, который уже возвращает список, затем я использую этот список, чтобы получить другой список. @SvyatoslavDanyliv задача[i].Идентификатор сохранения не равен нулю
5. это не повод для запуска цикла.
context.CargoActivities.Where(cargo => task.Select(x => x.BerReservationId).Contains(cargo.ReservationId))