C# 来自数组的Sharepoint XML查询
我在SharePoint 2010列表中有一个要搜索的x人的列表。如何用类似于if语句的XML构建or语句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>" +
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(
@"
完全符合我的需要。谢谢!