2011-03-27 22 views
0

...新來的LINQ和可以做一些幫助。LINQ:得到'使用新的關鍵字創建一個對象實例'當返回多個記錄

我在查詢一些遠程XML並使用LINQ將結果放入列表中。當xml查詢只返回1條記錄時,一切正常,我通過訪問列表中的[0]項目來獲得完全填充的'GetMPResult'對象。

...但是,如果有超過1個記錄在XML中,我得到「使用new關鍵字創建一個對象實例」

任何想法回來了?

XDocument myData = XDocument.Parse(e.Result); 
     List<GetMPResult> mp = (from mpItem in myData.Descendants("twfy") 
       select new GetMPResult 
      { 
       Member_id = mpItem.Element("member_id").Value, 
       House = mpItem.Element("house").Value, 
       First_name = mpItem.Element("first_name").Value, 
       Last_name = mpItem.Element("last_name").Value, 
       Constituency = mpItem.Element("constituency").Value, 
       Party = mpItem.Element("party").Value, 
       Entered_house = mpItem.Element("entered_house").Value, 
       Entered_reason = mpItem.Element("entered_reason").Value, 
       Left_house = mpItem.Element("left_house").Value, 
       Left_reason = mpItem.Element("left_reason").Value, 
       Person_id = mpItem.Element("person_id").Value, 
       Title = mpItem.Element("title").Value, 
       Lastupdate = mpItem.Element("lastupdate").Value, 
       Full_name = mpItem.Element("full_name").Value, 
       Url = mpItem.Element("url").Value, 
       Image = mpItem.Element("image").Value, 
       Image_height = mpItem.Element("image_height").Value, 
       Image_width = mpItem.Element("image_width").Value, 
      }).ToList<GetMPResult>(); 
     GetMPCompleteEvent(mp[0]); 
+0

GetMPCompleteEvent()方法的簽名是什麼? – 2011-03-27 00:57:43

+0

..在錯誤的選擇,所以沒有得到那麼遠 – 2011-03-27 01:13:05

回答

2

這看起來並不像它與對象的數量做,因爲它是從NullReferenceException錯誤消息。

我認爲在你正在處理的那些元素中只有一些元素即使你期待它也不存在,所以你得到了空引用。

嘗試註釋掉全部初始化列表中的屬性設置器(select new GetMPResult) - 如果它不拋出,則表示您發現問題。

+0

只是試圖評論他們...如果我評論他們都出我沒有錯誤/沒有數據。如果我取消註釋任何項目(記住從最後刪除逗號)我再次出現錯誤。 – 2011-03-27 01:11:39

+0

@AlanBeech:那麼你應該在你的XML中尋找一個空的''。 – Jon 2011-03-27 01:13:31

+0

啊......明白了。當返回多個記錄時,XML在每個記錄周圍都有一個額外的級別''。 – 2011-03-27 01:18:50

相關問題