2010-08-10 116 views
2

我正在使用SharePoint Web服务从SharePoint中为我正在处理的项目获取某些列表项。LINQ to SharePoint问题与SharePoint Web服务

我正在使用LINQ to XML来解析生成的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名称并不意味着我不希望它显示在结果中)

回答

0

见我就加入了ViewFields参数查询这里的答案:Soapclient query a Sharepoint web service

你会添加一个DNS_x0020_Name FieldRef您的特定ViewFields参数。

+0

该项目是在viewfields XML中,但因为它不是在Sharepoint中的必填字段,如果它没有输入到列表项中Sharepoint省略XML中的fieldref :( – TOSM 2010-08-11 15:32:41

1
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 
      }; 

这不行吗?

+0

不幸的是这不起作用,我试过了昨天看了一些后,由于该字段不在xml中,因此在查找属性时会引发错误。 – TOSM 2010-08-11 15:32:02