Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 来自数组的Sharepoint XML查询_C#_Loops_Sharepoint 2010_Caml - Fatal编程技术网

C# 来自数组的Sharepoint XML查询

C# 来自数组的Sharepoint XML查询,c#,loops,sharepoint-2010,caml,C#,Loops,Sharepoint 2010,Caml,我在SharePoint 2010列表中有一个要搜索的x人的列表。如何用类似于if语句的XML构建or语句 if( person1 || person2 || person3 || ... personx) 由于每个必须有两个孩子,不多不少,到目前为止,我有以下几点: query.InnerXml = "<Where>" + "<Or>" + "<Or>" +

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

if( person1 || person2 || person3 || ... personx)
由于每个
必须有两个孩子,不多不少,到目前为止,我有以下几点:

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>";
query.InnerXml=“”+
"" +
"" +
"" +
"" +
"" +
“人1”+
"" +
"" +
"" +
"" +
"" +
“人2”+
"" +
"" +
"" +
"" +
"" +
"" +
“人3”+
"" +
"" +
"";

但是,我想不出一个好方法来在我的x人列表中循环使用所有其他or语句,SharePoint 2010在子句中添加了一个
,从而简化了这一过程

这里有一个助手方法,可以将所有人放入
Value
wrappers:

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();
}
公共静态字符串值SASCAML(IEnumerable值,字符串类型)
{
StringBuilder输出=新的StringBuilder();
foreach(值中的字符串值)
{
AppendFormat(“{1}”,类型,值);
}
返回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);
var people=new[]{“Person1”、“Person2”、“Person3”};
字符串值=值SASCAML(人,“文本”);
var query=string.Format(
@"

完全符合我的需要。谢谢!