2

CASEカスタムの並べ替えを行うために、EntityDataSource でステートメントを使用しています。次のコードを検討してください。

<asp:EntityDataSource ID="myEntityDataSource" runat="server" 
    ConnectionString="name=MySQLEntities1" 
    DefaultContainerName="MySQLEntities1" 
    EnableFlattening="False" 
    EntitySetName="Persons" 
    EntityTypeFilter="Persons"
    OrderBy="it.[Pack], 
             CASE it.[Type] 
                WHEN 'MAN' THEN 1 
                WHEN 'VROUW' THEN 2 
                WHEN 'KIND' THEN 3 
             END, 
             it.[BirthDate] ASC" />

T-SQL では、これは完全に通常の並べ替え方法ですが、使用するEntityDataSource と次の例外がスローされます。

クエリ構文が無効です。識別子 'it' の近く、11 行目、21 列目。

このタイプの並べ替えを で機能させるにはどうすればよいEntityDataSourceですか?

4

1 に答える 1

3

私は今日まったく同じことを試みていました。Entity SQL Reference サイトで、明らかに使用する必要があり、使用CASE WHENできないことを発見しましたCASE [value] WHEN。このアプローチは、T-SQL の場合とは異なりますが、私にとってはうまくいきました。したがって、コードは次のようになります。

<asp:EntityDataSource ID="myEntityDataSource" runat="server" 
ConnectionString="name=MySQLEntities1"      
DefaultContainerName="MySQLEntities1"      
EnableFlattening="False"      
EntitySetName="Persons"      
EntityTypeFilter="Persons"     
OrderBy="it.[Pack],               
CASE 
WHEN it.[Type] = 'MAN' THEN 1                  
WHEN it.[Type] = 'VROUW' THEN 2                  
WHEN it.[Type] = 'KIND' THEN 3 END, it.[BirthDate] ASC" />

MSDN エンティティ SQL リファレンス:「CASE」

于 2011-11-28T17:41:57.263 に答える