如何编写CAML查询以使结果包含Column1和Column2?

时间:2012-02-07 16:23:14

标签: sharepoint caml

我的以下代码用于根据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。

谢谢,

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