2013-04-01 167 views
0

我正在嘗試跟隨CAML查詢,但它不能正常工作,而不是返回2個文檔,它將全部返回。CAML查詢無法正常工作

<Where><And><Or><Eq><FieldRef Name='Participant' /><Value Type='User'>Project1, test</Value></Eq><Eq><FieldRef Name='Participant' /><Value Type='User'>Project2, test</Value></Eq></Or><Eq><FieldRef Name='Department' /><Value Type='Text'>Positioning</Value></Eq></And></Where> 

我試圖測試在CAML查詢生成器,但沒有找到任何選項來添加兩個或一個AND條件像上面。

我的全查詢的建築規範是,

   strQuery1 = "<Where><And>"; 
       strQuery1 +="<Or>"; 
       foreach (string p in ParticipantNames) 
       { 
        strQuery1 += "<Eq><FieldRef Name='Participant' /><Value Type='User'>" + p + "</Value></Eq>"; 
       } 
       strQuery1 +="</Or>"; 
       strQuery1 += "<Eq><FieldRef Name='Department' /><Value Type='Text'>" + dept + "</Value></Eq></And></Where>"; 

回答

1

你檢查,你有多少值「ParticipantNames」變得怎麼樣? 因爲和,或者CAML中的條件我們只能指定2個條件,請檢查它循環了多少次?

<Where> 
<And> 
    <Or> 
    <Or> 
    <Eq><FieldRef Name='Participant' /><Value Type='User'>Project1, test</Value></Eq> 
    <Eq><FieldRef Name='Participant' /><Value Type='User'>Project2, test</Value></Eq> 
    </Or> 
    <Eq><FieldRef Name='Participant' /><Value Type='User'>Project3, test</Value></Eq> 
    </Or> 
    <Eq><FieldRef Name='Department' /><Value Type='Text'>Positioning</Value></Eq> 
</And> 
</Where>