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() + ""; 

解决方案来源