Die sprachintegrierten Abfragen arbeiten mit Methoden, die meist Sequenzen verwenden. Diese Objekte implementieren entweder die IEnumerable(Of T)-Schnittstelle oder die IQueryable(Of T)-Schnittstelle. Mir wird der Unterschied nicht klar, weil in beiden Fällen die Methode GetEnumerator() angeboten wird. Wer bringt Lichts ins Dunkel?
Zunächst: GetEnumerator() ist in beiden Schnittstellen vorhanden, weil IQueryable<T> von IEnumerable<T> erbt.
Mit IEnumerable kannst Du gut mit einer Datenstruktur im Speicher arbeiten. Die einzelnen Erweiterungsmethoden arbeiten im Prinzip wie Filter - das Ergebnis der ersten ist der Input für die zweite usw. Mit einer externen Datenquelle will man so normalerweise nicht arbeiten - es wäre ineffizient, eine ganze Tabelle in den Speicher zu laden und als IEnumerable zu repräsentieren, um dann anschließend und auf den .NET-Objekten eine Where-Bedingung anzuwenden. Deshalb arbeiten Objekte, die IQueryable implementieren, so, dass sie erst mal einen Ausdruck zusammenbauen, der dann am Ende als ganzes auf die Datenquelle angewendet wird. Der Witz bei IQueryable ist also vor allem die Expression-Eigenschaft und die unterschiedliche Art der Ausführung. Versuche mal - in Gedanken, auf dem Papier oder auch in Code - die Aufgabe zu lösen, aus