2010-07-12 21 views
0

我需要根據字段值從SharePoint列表中選擇一個值。字段的類型是LinkFieldValue。我應該如何編寫CAML查詢?如何編寫SPQuery以基於LinkFieldValue篩選項目?

當我選擇具有空查詢的項目時,按預期方式收到列表中的所有項目。

當我向查詢添加約束時,它返回一個空結果。我曾嘗試構建查詢,如下所示:

string.Format("<Where><Eq><FieldRef Name=\"PollInstancePoll\" /><Value " 
+"Type=\"Text\">{0}</Value></Eq></Where>", 
new LinkFieldValue { NavigateUrl = "/az/Lists/Polls/DispForm.aspx?ID=1", 
Text = "example poll" }); 

導致下面的查詢文本:

<Where><Eq><FieldRef Name="PollInstancePoll" /> 
<Value Type="Text"><a href="/az/Lists/Polls/DispForm.aspx?ID=1">example poll</a></Value> 
</Eq></Where> 

回答

1

我已經解決了我的問題,下面的查詢:

new SPQuery 
{ 
    Query = 
     CAML.Where(
      CAML.And(
       CAML.Contains(
        CAML.FieldRef("PollInstancePoll"), 
        CAML.Value(pollPath)), 
       CAML.Contains(
        CAML.FieldRef("PollInstancePage"), 
        CAML.Value(pagePath)))) 
}; 

基本上我我只檢查鏈接字段的URL部分,並提供比較值作爲Type="Text"。請務必記住,SharePoint始終將數據庫中的值存儲爲服務器相對URL。

+0

+1將我介紹給CAML.NET – 2010-07-13 06:34:53