【发布时间】:2011-04-28 19:57:50
【问题描述】:
我有两张桌子:
- 订单
- OrderProducts - 一个订单可以关联 1 到多个 orderProducts 记录。
我正在尝试做的(未成功)是使用 LinqDataSource 实现 GridView 搜索,其中搜索返回 Order 结果,其中任何 OrderProduct.Manufacturer 列都包含搜索查询。
我希望以下内容可以工作,但似乎 lambda 表达式在 LinqDataSource(在 VB 中)的 Where 子句中不起作用:
<asp:LinqDataSource ID="dsOrders" runat="server" ContextTypeName="myDataContext" TableName="orders"
Where="orderProducts.Any(Function(op) op.Manufacturer.Contains(@searchTerm))">
<WhereParameters>
<asp:ControlParameter Name="searchTerm" ControlID="txtSearchTerm" DefaultValue="" />
</WhereParameters>
</asp:LinqDataSource>
在 C# 中它看起来像:
<asp:LinqDataSource ID="dsOrders" runat="server" ContextTypeName="myDataContext" TableName="orders"
Where="orderProducts.Any(op => op.Manufacturer.Contains(@searchTerm))">
<WhereParameters>
<asp:ControlParameter Name="searchTerm" ControlID="txtSearchTerm" DefaultValue="" />
</WhereParameters>
</asp:LinqDataSource>
我得到的错误是:
中不存在属性或字段“op” 输入“订单产品”
关于如何在 LinqDataSource 定义中使其工作的任何线索,或者我是否必须处理和设置自定义 OnSelecting 事件?
【问题讨论】:
标签: c# asp.net vb.net linq linq-to-sql