我的以下代码用于根据ID进行过滤:
camlQuery = xmlDoc.CreateElement("Query");
camlQuery.InnerXml = "<Where><Gt><FieldRef Name='ID'/><Value Type='Number'>0</Value></Gt></Where>";
如何编写CAML查询以使其返回(结果包含)Column1和Column2?
我是CAML查询的新手,也许不能过滤并说只应返回某些列?
问题是,当我运行上面的查询时,它会返回列表中的所有SharePoint列(42),而我只需要2-3。
谢谢,
答案 0 :(得分:0)
您必须使用SPQuery.ViewFields属性。
答案 1 :(得分:0)
SPQuery.Query
的MSDN文档提供了一个很好的示例,说明如何使用Query
属性和ViewFields
对象的SPQuery
属性:
SPList oList = oWebsiteRoot.Lists["List_Name"];
SPQuery oQuery = new SPQuery();
oQuery.ViewFields = "<FieldRef Name='Column1'/><FieldRef Name='Column2'/>";
oQuery.Query = "<Where><Gt><FieldRef Name='ID'/>" +
"<Value Type='Number'>0</Value></Gt></Where>";
SPListItemCollection collListItems = oList.GetItems(oQuery);
答案 2 :(得分:0)
尝试使用以下代码:
XmlDocument xmlDoc = new System.Xml.XmlDocument();
XmlElement query = xmlDoc.CreateElement("Query");
XmlElement viewFields = xmlDoc.CreateElement("ViewFields");
XmlElement queryOptions = xmlDoc.CreateElement("QueryOptions");
query.InnerText = "<Where><Gt><FieldRef Name='ID'/><Value Type='Number'>0</Value></Gt></Where>";
viewFields.InnerXml = "<FieldRef Name=\"Column1\" /><FieldRef Name=\"Column2\" />";
queryOptions.InnerXml = "";
try
{
XmlNode ndListItems = listService.GetListItems("List_Name", null, query, viewFields, null, queryOptions, null);
}
供参考:msdn example