0

Je travaille sur la modification de this exemple:Travailler avec le ObjectQuery unique Enumeration Défi dans LINQ à entités Entity SQL

Using advWorksContext As New AdventureWorksEntities 
    ' Call the constructor that takes a command string and ObjectContext. 
    Dim productQuery1 As New ObjectQuery(Of Product)("Product", advWorksContext) 

    Dim result As Product 
    For Each result In productQuery1 
     Console.WriteLine("Product Name: {0}", result.Name) 
    Next 
End Using 

Un ObjectQuery peut être enumberated qu'une seule fois. (Les tentatives suivantes d'énumération lèvent une exception.) L'énumération a lieu dans l'instruction for each. Le problème est que si la requête est vide en tentant un For Each va lancer une exception. Mais si je vérifie pour un compte:

If productQuery1.Count > 0 Then . . . 

qui mange ma seule chance à l'énumération. Je pourrais imbriquer For Each dans un bloc try/catch et jeter les exceptions de requête vides, mais c'est moche. Y a-t-il une meilleure solution?

Répondre

2

Si vous ajoutez un appel ToList() à la fin de votre requête, vous devriez pouvoir énumérer les résultats aussi souvent que vous le souhaitez.

+0

Vous avez raison. J'étais sûr que j'avais déjà essayé ça alors je ne l'ai pas essayé. . . Tant pis pour ma mémoire! Merci – Jeff

Questions connexes