C# SharePoint Web Services的LINQ到XML问题

C# SharePoint Web Services的LINQ到XML问题,c#,linq,sharepoint,sharepoint-2007,linq-to-xml,C#,Linq,Sharepoint,Sharepoint 2007,Linq To Xml,我正在使用SharePoint Web Services从SharePoint中获取我正在处理的项目的一些列表项 我使用LINQtoXML解析生成的XML,并将其放入数据表中。 我遇到的问题是,试图解析SharePoint中不需要的项时 var fields = from item in results.Descendants(XName.Get("row", "#RowsetSchema")) select new

我正在使用SharePoint Web Services从SharePoint中获取我正在处理的项目的一些列表项

我使用LINQtoXML解析生成的XML,并将其放入数据表中。 我遇到的问题是,试图解析SharePoint中不需要的项时

var fields = from item in results.Descendants(XName.Get("row", "#RowsetSchema"))
                     select new
                     {
                         ID = item.Attribute("ows_ID").Value,
                         Title = item.Attribute("ows_Title").Value,
                         DNS = item.Attribute("ows_DNS_x0020_Name").Value
                     };
DNS名称不是列表中的必需项,某些项没有此项的条目。sharepoint生成的xml忽略了xml中的字段,导致“对象引用未设置为对象的实例。”异常


是否有一种解决方法,而不必在LINQ语句中添加where子句(仅仅因为没有输入DNS名称并不意味着我不希望它显示在结果中)

请参见我关于在查询中添加
ViewFields
参数的回答:

您需要将
DNS\u x0020\u Name
FieldRef添加到特定的ViewFields参数中

var fields = from item in results.Descendants(XName.Get("row", "#RowsetSchema")) 
             select new 
             { 
                ID = item.Attribute("ows_ID").Value, 
                Title = item.Attribute("ows_Title").Value, 
                DNS = item.Attribute("ows_DNS_x0020_Name") == null ? "" : item.Attribute.("ows_DNS_x0020_Name").Value 
             }; 

这不管用吗?

不幸的是,这不管用,我昨天查看了一番后尝试了它,由于该字段不在xml中,因此在查找属性时会抛出错误。该项位于viewfields xml中,但由于它不是sharepoint中的必填字段(如果未输入列表项),sharepoint会忽略xml中的fieldref:(