现代化的SharePoint CAML查询,具有多种标准

问题描述 投票:0回答:1

我是CAML的新手。CAML似乎是过滤列表的好方法,但我在写嵌套的andor语句时很吃力。

我试图从小事做起,写一个只有两个条件的CAML查询,这样我就能掌握它的窍门。以下是我失败的尝试。

<View>
<Query>
<Where>
    <and>
        <Contains>
            <FieldRef Name='PracticeArea_x0028_s_x0029_' />
            <Value Type='Text'>Lean</Value>
        </Contains>
        <NotInclude>
            <FieldRef Name='PracticeArea_x0028_s_x0029_' />
            <Value Type='Text'>,</Value>
        </NotInclude>
    </and>
</Where>
</Query>
</View>

任何帮助,支持,和或洞察力这个社区可以提供非常感激。

sharepoint caml
1个回答
0
投票

NotInclude用于允许多个值的Lookup字段,所以如果你针对一个文本字段进行过滤,就无法使用。

https:/docs.microsoft.comen-ussharepointdevschemanotincludes-element-query。

你可以先用 Contains 过滤,然后用 Linq 或类似的方法过滤。

 SPList list = web.Lists.TryGetList("TestFilter");
                    SPQuery spQuery = new SPQuery();                        
                    spQuery.Query = @"<Where>                                          
                                            <Contains>
                                            <FieldRef Name='PracticeArea' />
                                            <Value Type='Text'>Lean</Value>
                                            </Contains>                                                                                         
                                       </Where>";
                    var items = list.GetItems(spQuery);
                    var filterItems=items.Cast<SPListItem>().Where(item => string.Format("{0}",item["PracticeArea"]).IndexOf(',') <0);
                    Console.WriteLine(filterItems.Count());
© www.soinside.com 2019 - 2024. All rights reserved.