這是我的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