Вот урезанная версия моего запроса linq;
var list = from inv in db.Inventories
where inv.InventoryCode.StartsWith("005")
select
new
{
inv.InventoryCode,
inv.InventoryMedias.Where(im => im.MediaType == 0).FirstOrDefault().Synopsis,
inv.InventoryMedias.Where(im => im.MediaType == 0).FirstOrDefault().InventoryID
};
... поскольку запись инвентаризации не должна содержать строк в InventoryMedia, я добавил .FirstOrDefault (), который затем возвращает ноль, а linq достаточно умен, чтобы не выдавать ошибку ONSTIOO, но я получаю эта ошибка.
Ошибка приведения к типу значения 'Int32'
потому что материализованная ценность
ноль. Либо общий тип результата
параметр или запрос должен использовать
обнуляемый тип
Теперь я понимаю, что могу просто изменить анонимный тип на класс и определить это целое число как обнуляемый тип, но я не хочу этого делать. Я также пытался использовать команду if null "?? 0", но это не поддерживается на ссылочных типах, таких как int. Я знаю, что могу использовать .DefaultIfEmpty () и установить значение по умолчанию для анонимного типа, но как я могу установить значение по умолчанию для целого числа или есть другая альтернатива?