0

次のCamlクエリを使用して、SharePointリストからデータを取得しています。

    oSb.Append("         <OrderBy>")
    oSb.Append("              <FieldRef Name=""Title"" />")
    oSb.Append("         </OrderBy>")

しかし、このクエリは私にリストのすべての列を与えています。Caml Queryを使用してSharePointリストから目的の列のみを取得する方法はありますか?私を助けてください。

4

1 に答える 1

4

ビュー フィールドに関するMSDNの記事を参照してください。CAML クエリを実行する前に、これらのフィールドを指定できます。

using (SPSite site = new SPSite("http://localhost"))
     {
        using (SPWeb web = site.OpenWeb())
        {
           // Build a query.
           SPQuery query = new SPQuery();
           query.Query = string.Concat(
                          "<Where><Eq>",
                             "<FieldRef Name='Status'/>",
                             "<Value Type='CHOICE'>Not Started</Value>",
                          "</Eq></Where>",
                          "<OrderBy>",
                             "<FieldRef Name='DueDate' Ascending='TRUE' />",
                             "<FieldRef Name=’Priority’ Ascending='TRUE' />", 
                          "</OrderBy>");                    

           query.ViewFields = string.Concat(
                               "<FieldRef Name='AssignedTo' />",
                               "<FieldRef Name='LinkTitle' />",
                               "<FieldRef Name='DueDate' />",
                               "<FieldRef Name='Priority' />");

           query.ViewFieldsOnly = true; // Fetch only the data that we need.

           // Get data from a list.
           string listUrl = web.ServerRelativeUrl + "/lists/tasks";
           SPList list = web.GetList(listUrl);
           SPListItemCollection items = list.GetItems(query);

           // Print a report header.
           Console.WriteLine("{0,-25}  {1,-20}  {2,-25}  {3}",
              "Assigned To", "Task", "Due Date", "Priority");

           // Print the details.
           foreach (SPListItem item in items)
           {
              Console.WriteLine("{0,-25}  {1,-20}  {2,-25}  {3}",
                 item["AssignedTo"], item["LinkTitle"], item["DueDate"], item["Priority"]);
           }
        }
于 2012-05-15T07:22:13.440 に答える