2012-11-17 14 views
7

私はvisual studio C#でcamelクエリを使用してSharePoint 2010のリストからアイテムを取得しています。リストアイテムには、camlクエリで使用する2つのフィールドがあります。 1つは「セクション」で、もう1つは「オーダー・バイ」です。クエリはアイテムを特定の方法で注文する必要があります。まず、セクション(昇順= true)で並べ替える必要があります。次に、Order By(昇順= true)でセカンダリソートを行います。CAMLクエリでdouble orderbyを行うには?

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

 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); 

しかし、どのように私は二ORDERBYを適用します。これまでのところ、私はこれを持って

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

注:セクションは文字列フィールドで、order byは数字フィールドです。

+1

おそらくこれが役立ちます:http://www.u2u.be/Tools/wincamlquerybuilder/CamlQueryBuilder.aspx – Yahia

答えて

13

、あなたが[並べ替え要素内に複数のするFieldRefを含めることができます。

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

与えられた例がある:

私が使用
<OrderBy> 
    <FieldRef Name="Newcomers"/> 
    <FieldRef Name="Years" Ascending="FALSE"/> 
    <FieldRef Name="Location"/> 
</OrderBy> 
1

CAML Builderは、難しい問合せがある場合には特に簡単になります。

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

2007年版は、2010年に正常に動作し、私が最初に私の場合、毎日

+0

http:// sharepoint .biwug.be/SitePages/Caml_Designer.aspx –

0

それを使用するには、上記の答えは動作していないようです。私は後でのDataTableに変換し、それらを並べ替えるために、次のスクリプトを使用しているため しかし、本当の問題があってCategoryPositionの型はintなど10

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

を置くだろう文字列型で、デフォルトではなかったましたこの種のものを見て、複数のソートを並べ替えるのは、Steve Manninaのようにうまくいきます。

関連する問題