首页 新闻 会员 周边

一个LINQ to list的问题

0
悬赏园豆:100 [已解决问题] 解决于 2016-01-04 10:54

代码如下,执行时提示空指针异常,谁知道是什么原因?

执行后报的错:Object reference not set to an instance of an object.

 

XML文件:

<jobFlow>
  <unit>
    <unitID>00000</unitID>
    <name>BEGIN</name>
    <unitType>Terminator</unitType>
    <nextUnit>000003</nextUnit>
  </unit>

</jobFlow>

代码:

 string xmlPath = @"D:\a\xml\BIS100\MAIN_SECT.xml";

 XDocument myXDoc = XDocument.Load(xmlPath);
 XElement rootNode = myXDoc.Element("jobFlow");


下面注释的这部分代码执行是正常的
            //var query = from item in rootNode.Descendants("unit")
            //            select new
            //            {

           //                unitID = item.Element("unitID").Value,
            //                name = item.Element("name").Value,
            //                unitType = item.Element("unitType").Value,
            //                nextUnit = item.Element("nextUnit").Value,
            //            };

 

想直接转list<T>, 报错 Object reference not set to an instance of an object.

 List<JobFlow> jobFlows = (from item in rootNode.Descendants("unit")
                                     select new JobFlow
                                     {
                                         UnitID = item.Element("unitID").Value,
                                         Name = item.Element("name").Value,
                                         UnitType = item.Element("unitType").Value,
                                         NextUnit = item.Element("nextUnit").Value
                                     }).ToList<JobFlow>();

 

public class JobFlow
    {
        public string UnitID { get; set; }
        public string Name { get; set; }
        public string UnitType { get; set; }
        public string NextUnit { get; set; }

    }

码农加一的主页 码农加一 | 初学一级 | 园豆:81
提问于:2015-07-10 15:09
< >
分享
最佳答案
1

这么简单的描述,没办法判断你的问题,可以贴出异常的代码

确定rootNode有效吗? 确定该xml被打开了吗?

收获园豆:50
visonme | 小虾三级 |园豆:1674 | 2015-07-10 15:12

看我的问题,我修改了一下,谢谢

码农加一 | 园豆:81 (初学一级) | 2015-07-10 15:26

@韩之一: 

这样写就可以了

XDocument myXDoc = XDocument.Load(xmlPath);

 List<JobFlow> jobFlows = (from item in myXDoc.Descendants("unit")
                                  select new JobFlow
                                  {
                                      UnitID = item.Element("unitID").Value,
                                      Name = item.Element("name").Value,
                                      UnitType = item.Element("unitType").Value,
                                      NextUnit = item.Element("nextUnit").Value
                                  }).ToList<JobFlow>();
visonme | 园豆:1674 (小虾三级) | 2015-07-10 15:46

@visonme: @visonme: 找到问题的原因了,xml内容的问题,不是所有的属性都有

码农加一 | 园豆:81 (初学一级) | 2015-07-14 09:49
其他回答(1)
1

运行起来没问题啊!

收获园豆:50
at小怪兽 | 园豆:760 (小虾三级) | 2015-07-10 15:43

@visonme: 找到问题的原因了,xml内容的问题,不是所有的属性都有

支持(0) 反对(0) 码农加一 | 园豆:81 (初学一级) | 2015-07-14 09:49

@韩之一: 解决了就行!

支持(0) 反对(0) at小怪兽 | 园豆:760 (小虾三级) | 2015-07-14 13:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册