У меня есть две таблицы:
- Заказы
- OrderProducts - у заказа может быть от 1 до многих записей OrderProducts, связанных с ним.
Что я пытаюсь сделать (безуспешно) - реализовать поиск GridView с использованием LinqDataSource, в котором поиск возвращает результаты Order, где любой из столбцов OrderProduct.Manufacturer содержит поисковый запрос.
Я надеялся, что сработает следующее, однако кажется, что лямбда-выражения не работают в предложении Where в LinqDataSource (в 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>
В 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' в
введите 'orderProduct'
Есть какие-нибудь подсказки относительно того, как заставить это работать в пределах определения LinqDataSource, или мне придется обрабатывать и настраивать пользовательское событие OnSelecting?