I have two tables:
- Orders
- OrderProducts - An order can have 1 to many orderProducts records associated with it.
What I am trying to do (unsuccessfully) is to implement a GridView search using a LinqDataSource wherein the search returns Order results where any of the OrderProduct.Manufacturer columns contain a search query.
I was hoping the following would work, however it seems lambda expressions do not work within a Where clause of a LinqDataSource (in VB):
<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>
In C# it would look like:
<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>
The error I am getting is:
No property or field 'op' exists in type 'orderProduct'
Any clues as to how to get this working within the LinqDataSource definition, or will I have to handle and set up a custom OnSelecting event?