首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EntityDataSource在其中

EntityDataSource在其中
EN

Stack Overflow用户
提问于 2017-02-09 09:33:27
回答 1查看 895关注 0票数 3

我有一个asp:EntityDataSource

代码语言:javascript
复制
<asp:EntityDataSource ID="EntityDataSource1" runat="server" 
    ConnectionString="name=MyEntities"  DefaultContainerName="MyEntities" 
    EntitySetName="Student" Where="it.Age = 12 or it.Age = 13"> 
</asp:EntityDataSource>

现在我需要展示更多的年龄。有办法写得这么短吗?

我的尝试:

代码语言:javascript
复制
<asp:EntityDataSource ID="EntityDataSource1" runat="server" 
    ConnectionString="name=MyEntities"  DefaultContainerName="MyEntities" 
    EntitySetName="Student" Where="it.Age IN (11,12,13,14)"> 
</asp:EntityDataSource>

但这会造成一个错误

set表达式的正确参数必须是CollectionType。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-17 10:03:50

INWhere属性上使用EntityDataSource子句的正确方法是在数组声明之类的所有值周围放置大括号块:

代码语言:javascript
复制
<asp:EntityDataSource ID="EntityDataSource1" runat="server" 
    ConnectionString="name=MyEntities"  DefaultContainerName="MyEntities" 
    EntitySetName="Student" Where="it.Age IN {11,12,13,14}"> 
</asp:EntityDataSource>

使用大括号的原因可能取决于ObjectQuery,它接收对给定上下文上的模型的类型化查询,该模型可能接受值数组。换句话说,In子句在LINQ格式上具有等效的以下内容:

代码语言:javascript
复制
int[] ages = new int[] {11, 12, 13, 14};
var query = MyEntities.Student.Where(it => it.Age.Contains(ages));

生成的SQL命令将变成:

代码语言:javascript
复制
SELECT * FROM [MyEntities].[Student] WHERE Age IN (11,12,13,14)

其他可能的原因是ASPX页面标记中的服务器控制语法遵循XSLT关于属性值模板的惯例,后者将大括号块解释为字符串值表达式,括号作为方法参数/表达式附件处理(参见XSL转换细节)。

类似问题:

EntityDataSource在VB.NET中的子句

其他参考资料:

创建IN查询

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42132925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档