2011-02-15 181 views
1

我試圖構建一個包含從一個列表中的所有對象,但如果在另一個列表中存在的對象更新特定屬性的列表。使用LINQ執行左外連接

首先我創造一切可能的「選項」的名單。然後,我想更新此列表中任何項目的「選定」屬性,這些項目也存在於我創建的另一個「選項」列表中。我希望下面的代碼可以工作,但我得到了異常「對象引用未設置爲對象的實例」。

 var query = from o in AllOptions 
        join so in SelectedOptions on o.Code equals so.Code into newOptions 
        from no in newOptions.DefaultIfEmpty() 
        select new Option 
     { 
      Name = o.Name, 
      Description = o.Description, 
      Code = o.Code, 
      Applicable = o.Applicable, 
      Selected = no.Selected 
     }; 

回答

2

你得到你的投影距離no.Selected聲明例外,當no爲null,將拋出,因爲你提領一空。

您可以通過指定一個默認值修復時no爲空:

//default to false when no is null 
Selected = (no == null) ? false : no.Selected 
+0

嗨DoctaJonez,你回答秒鐘,然後我把我自己的答案。我正在刪除我自己的答案。謝謝。 – FloatLeft 2011-02-15 13:51:21