2010-08-10 115 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