CAML查询到SharePoint列表返回整个集
我一直遇到一个问题,如果我在C#中执行CAML查询,我的ListItemCollection包含整个列表。 这是我擦洗代码的片段,也许你可以看到我做错了什么。 在调试时,我发现生成的XML是我从文件中读取的值所期望的。 实际执行查询和加载结果似乎存在问题。 我在这里做的步骤对我来说似乎不正确,我觉得我错过了一步。
using Microsoft.SharePoint.Client; ... System.Net.NetworkCredential credentials = new System.Net.NetworkCredential(user, password, domain); ClientContext clientContext = new ClientContext(uri); clientContext.Credentials = credentials; List list = clientContext.Web.Lists.GetByTitle(listName); //read line of input from file and save to string[] CamlQuery camlQuery = new CamlQuery(); camlQuery.ViewXml = "" + columns[2].Trim() + "" + columns[0].Trim() + "" + columns[1].Trim() + ""; ListItemCollection listItems = list.GetItems(camlQuery); clientContext.Load(listItems); clientContext.ExecuteQuery();
在SharePoint CSOM中, CamlQuery.ViewXml属性的根元素是
,例如:
public CamlQuery CreateInventoryQuery(string searchSku) { var qry = new CamlQuery(); qry.ViewXml = @" " + searchSku + @" "; return qry; }
参考
使用客户端对象模型
因此经过长时间的搜索,我确定这是CAML查询本身的一个问题。 显然我需要用VIEW标签包含XML,否则它甚至不执行查询。 以下更改实际上由于某种原因而起作用。
camlQuery.ViewXml = "" + columns[2].Trim() + " " + columns[0].Trim() + " " + columns[1].Trim() + " ";
解决方案来源