来自数组的 SharePoint XML 查询



我有一个在 SharePoint 2010 列表中搜索的 x 人的列表。 如何在 XML 中构建类似于 if 语句的 or 语句

if( person1 || person2 || person3 || ... personx)

由于每个<Or>都必须有 2 个孩子,不多也不少,到目前为止我有这个:

query.InnerXml = "<Where>" +
                     "<Or>" +
                        "<Or>" +
                        "<Contains>" +
                            "<FieldRef Name="Member" />" +
                            "<Value Type="Text">" +
                                 "Person1" +
                            "</Value>" +
                        "</Contains>" +
                        "<Contains>" +
                            "<FieldRef Name="Member" />" +
                            "<Value Type="Text">" +
                                 "Person2" +
                            "</Value>" +
                         "</Contains>" +
                     "</Or>" +
                     "<Contains>" +
                         "<FieldRef Name="Member" />" +
                         "<Value Type="Text">" +
                              "Person3" +
                         "</Value>" +
                     "</Contains>" +
                 "</Or></Where>";

但是我想不出一种好方法在循环浏览我的x人列表时做出所有其他或陈述

>SharePoint 2010 添加了一个In子句,这简化了此操作。

下面是将所有人放入包装器Value帮助器的方法:

public static string ValuesAsCAML(IEnumerable<string> values, string type)
{
    StringBuilder output = new StringBuilder();
    foreach (string value in values)
    {
        output.AppendFormat("<Value Type=`{0}`>{1}</Value>", type, value);
    }
    return output.ToString();
}

有了它,您现在可以编写:

var people = new[] { "Person1", "Person2", "Person3" };
string values = ValuesAsCAML(people, "Text");
var query = string.Format(
@"<Where>
    <In>
        <FieldRef Name='Member` />
        <Values>
            {0}
        </Values>
    </In>
</Where>"
, values);

相关内容

  • 没有找到相关文章

最新更新