我在我的EntityDataSource中使用CASE
语句来进行自定义排序。请考虑以下代码:
<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
中使用此类排序?
答案 0 :(得分: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" />