LINQ:当返回多个记录时,获取'使用new关键字创建对象实例'

时间:2011-03-27 00:52:00

标签: .net linq

...... LINQ的新手,可以提供一些帮助。

我正在查询一些远程xml并使用LINQ将结果放入List中。当xml查询只返回1条记录时,一切正常,我通过访问列表中的[0]项获得一个完全填充的“GetMPResult”对象。

...但是,如果xml中返回的记录超过1条,我会得到“使用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]);

1 个答案:

答案 0 :(得分:2)

这看起来与对象数量无关,因为它是来自NullReferenceException的错误消息。

我认为即使你期待它,你正在处理的那些元素中只有一些元素是不存在的,所以你得到了空引用。

尝试在初始化列表(select new GetMPResult)中注释所有属性设置器 - 如果它没有抛出,则表示您发现了问题。