2009-05-29 10 views
0

ich auf Modifizieren this Beispiel gerade arbeite:Arbeiten mit dem Objecteinzel Enumeration Herausforderung in Linq-To-Entities 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 

Ein Object kann nur einmal enumberated werden. (Nachfolgende Enumerationsversuche lösen eine Ausnahme aus.) Die Enumeration findet in jeder Anweisung statt. Das Problem ist, dass wenn die Abfrage leer ist, versucht ein For Each eine Ausnahme auszulösen. Aber wenn ich nach einer Zählung überprüfe:

If productQuery1.Count > 0 Then . . . 

Das frisst meine eine Chance auf Aufzählung. Ich könnte die For Each in einem try/catch-Block verschachteln und die leeren Abfrageausnahmen wegwerfen, aber das ist hässlich. Gibt es eine bessere Lösung?

Antwort

2

Wenn Sie am Ende Ihrer Abfrage einen ToList()-Aufruf hinzufügen, sollten Sie in der Lage sein, die Ergebnisse so oft aufzuzählen, wie Sie möchten.

+0

Sie haben Recht. Ich war mir sicher, dass ich das schon versucht hatte, also habe ich es nicht versucht. . . So viel zu meiner Erinnerung! Vielen Dank – Jeff