日期:2014-05-20  浏览次数:21051 次

linq to xml 的问题 重新发帖 还是没解决,望大家帮自己看看
XML code

<main>
  <texte>Accès refusé</texte>
  <errcode>2</errcode>
    <url></url>
</main>


上面就是个例子,是拒绝访问。
C# code

XDocument xmlsociete = XDocument.Parse(DataXML);
            var societe = from str in xmlsociete.Descendants("main")
                          select new Societe()
                          {
                              nosiret = str.Element("no").Value,
                              deno = str.Element("deno").Value,
                              adresse = str.Element("adresse").Value,
                              codepostal = str.Element("codepostal").Value,
                              commune = str.Element("commune").Value,
                              struri = str.Element("url").Value,
                              lstdirig=new List<Dirigeant>(),
                              lstevenement=new List<Evenement>(),
                          };


上面是我的linq的代码部分,如果那个xml中还有这个str.Element("no").Value等等,当然可以生成societe,而且我可以得到xml的数据,但现在如果像上面那段xml,我是得不到societe的,这样我使用下面的代码就会出错
C# code
Societe soc=societe.ToArray<Societe>()[0];

所以我想在这条代码前加一个判断,判断var societe中存不存在Societe的实体,我试过societe==null,试过societe.count()==0,但都不好使都会出现一个错误La référence d'objet n'est pas définie à une instance d'un objet.,我的vs是法语版的,翻译过来应该是,这个reference没有定义一个societe的实体,所以请大家帮看看如何判断。

------解决方案--------------------
C# code

XDocument xmlsociete = XDocument.Parse(DataXML);
            var query= from str in xmlsociete.Descendants("main")
                          select new Societe 
                          {
                              nosiret = str.Element("no")==null?"":str.Element("no").Value,
                              deno = str.Element("deno")==null?"": str.Element("deno").Value,
                              adresse = str.Element("adresse")==null?"": str.Element("adresse").Value,
                              codepostal = str.Element("codepostal")==null?"": str.Element("codepostal").Value,
                              commune =str.Element("commune")==null?"": str.Element("commune").Value,
                              struri = str.Element("struri")==null?"": str.Element("struri").Value,
                              lstdirig=new List<Dirigeant>(),
                              lstevenement=new List<Evenement>(),
                          };
if(query.Count()>0)
if(query.FirstOrDefault()!=null)