这是我的linq查询的减少版本;LINQ - 访问子表上的Int列并处理没有子行时的情况
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()并为匿名类型设置一个默认值,但我如何设置整数的默认值或是否有另一种选择?
这两个答案都可以接受,这一个是有点整洁。谢谢。 – tkerwood 2010-11-16 08:33:52