8

Visual Studio C# でキャメル クエリを使用して、sharepoint 2010 のリストからアイテムを取得しています。リスト アイテムには、caml クエリで使用する 2 つのフィールドがあります。1 つは「セクション」で、もう 1 つは「Order By」です。クエリは、特定の方法でアイテムを並べ替える必要があります。まず、セクション (ascending = true) で並べ替え、次にそれぞれについて、Order By (ascending = true) で 2 番目に並べ替える必要があります。

たとえば、結果は次のようになります。

<item> <Section> <Order By>
item1  A 1
item2  A 3
item3  B 1
item4  B 2
item5  C 5
item6  C 6

これまでのところ、私はこれを持っています:

        SPQuery query = new SPQuery();
        query.Query = "<Query><OrderBy><FieldRef Name='" + Root_List.Fields.GetField(SECTION_COLUMN).InternalName + "' Ascending='True'/></OrderBy></Query>";
        item_collection = Root_List.GetItems(query);

しかし、二次オーダーバイを適用するにはどうすればよいでしょうか?

注: Section は文字列フィールドで、order by は数値フィールドです。

4

4 に答える 4

14

MSDNのこのページごとに、OrderBy要素内に複数のFieldRefを含めることができます。

http://msdn.microsoft.com/en-us/library/ms467378.aspx

与えられた例は次のとおりです。

<OrderBy>
  <FieldRef Name="Newcomers"/>
  <FieldRef Name="Years" Ascending="FALSE"/>
  <FieldRef Name="Location"/>
</OrderBy>
于 2012-11-18T03:55:51.403 に答える
1

私は CAML Builder を使用しています。特に難しいクエリがある場合は、CAML Builder を使用すると作業がずっと楽になります。ここから入手できます。

http://www.u2u.be/res/tools/camlquerybuilder.aspx

2007年版は2010年版で問題なく動作します。毎日使用しています

于 2012-11-21T10:38:23.933 に答える
0

並べ替えたい列を連結する計算列を作成してみてください。次に、新しい計算列でリストを並べ替えます。

http://msdn.microsoft.com/en-us/library/bb862071(v=office.14).aspx

于 2012-11-17T07:59:27.847 に答える
0

私の場合、最初は上記の答えがうまくいかないようです。しかし、本当の問題は、後でそれらを DataTable に変換し、次のスクリプトを使用してそれらをソートし、CategoryPosition のタイプが int ではなく、1 の後に 10 を配置する文字列タイプのデフォルトだったためです。

            DataView dv = new DataView(maindt);
            dv.Sort = "Category,CategoryPosition";
            maindt = dv.ToTable();

したがって、この種のことに注意してください。複数の並べ替えでのcamlの並べ替えは、Steve Manninaの回答のように正常に機能しています

于 2013-10-30T08:23:51.337 に答える