2009-09-20 3 views
2

Я пытаюсь выполнить запрос на результат запроса, но я получаю сообщение об ошибке: «Метод или операция не реализованы». Могу ли я запрограммировать запросы таким образом? Например, у меня есть DataSet с типичным для Northwind. Я:Цеповое привязку LINQ запросов в LINQ to DataSet

queryResult = From product In NorthWindDataSet.Products 
         Where (product.UnitsOnOrder > CInt(txtUnitsOnOrderFilter.Text)) 
         Select product 

Тогда я пытаюсь сделать

queryResult = From product In queryResult 
       Where (product.CategoryID = cboCategoryFilter.SelectedValue) 
       Select product 

Чтобы, наконец, использовать результат запроса в качестве обязательного источника: ProductsBindingSource.DataSource = queryResult.AsDataView()

Как может Я это делаю?

ответ

0

LINQ to SQL, вероятно, жалуется на вызовы CInt и SelectedValue в ваших запросах. Попробуйте захватить эти значения за пределами вашего запроса вместо:

Dim units = CInt(txtUnitsOnOrderFilter.Text) 
Dim catId = cboCategoryFilter.SelectedValue 

queryResult = From product In NorthWindDataSet.Products 
       Where (product.UnitsOnOrder > units) AndAlso (product.CategoryID = catId) 
       Select product 
+0

Я попытался использовать буквенные значения, как Вы предложили, например Dim единиц = 2 и Dim CatID = 3, но теперь я получаю: «Не могу создать DataView после использования проекции "в System.Data.EnumerableRowCollection'1.GetLinqDataView(). Для меня важно иметь возможность выполнять запрос по результату запроса, как я уже писал, поскольку условия применяются динамически. Это означает, что иногда используются только единицы, иногда только catId, а иногда и оба условия. – Dan

+0

Вы делаете какие-либо проекции на queryResult после этой фильтрации, возможно, выбирая только Product.ID или что-то еще? Это похоже на то, что может вызвать эту ошибку. Кроме того, вы пытались просто привязать свой источник данных к queryResult без вызова AsDataView()? – dahlbyk

Смежные вопросы