2009-09-20 5 views
2

J'essaie d'effectuer une requête sur un résultat de requête, mais une erreur se produit: "La méthode ou l'opération n'est pas implémentée". Puis-je chaîner les requêtes de cette manière? Par exemple, j'ai un DataSet typé Northwind. Je fais:Chaînage de requêtes LINQ de base de données dans LINQ à DataSet

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

Alors je tente de faire

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

Pour utiliser finalement résultat d'une requête en tant que source de liaison: ProductsBindingSource.DataSource = queryResult.AsDataView()

Comment J'accomplis cela?

Répondre

0

LINQ to SQL se plaint probablement des appels CInt et SelectedValue dans vos requêtes. Essayez de capturer ces valeurs en dehors de votre requête à la place:

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

J'ai essayé d'utiliser des valeurs littérales, comme vous le suggérez, par exemple des unités Dim = 2 et Dim catId = 3, mais maintenant que je reçois: « Impossible de créer DataView après avoir utilisé projection "exception at System.Data.EnumerableRowCollection'1.GetLinqDataView(). Il est important pour moi d'être en mesure d'effectuer une requête sur le résultat de la requête que j'ai posté à l'origine, car les conditions sont appliquées dynamiquement. Cela signifie que, parfois, seules les unités, parfois seulement les paires et parfois les deux, sont utilisées. – Dan

+0

Est-ce que vous faites une sorte de projection sur queryResult après ce filtrage, peut-être en sélectionnant juste Product.ID ou quelque chose? Cela semble être ce qui causerait cette erreur. Aussi, avez-vous essayé de lier votre source de données à queryResult sans appeler AsDataView()? – dahlbyk