2012-04-11 8 views
1

Ich habe gerade gelesen question und es hat mich darüber nachdenken, warum ich die IEnumerable beim Abrufen von Daten verwenden müsste. Ich verstehe die Unterschiede zwischen IQueryable und IEnumerable, aber wäre ein IEnumerable Objekt besser für Daten, die Filterung ermöglicht? zum Beispiel eine Tabelle mit den Datensätzen, die ein Datum enthalten, damit ich nach dem Datum sortieren kann.Ist IEnumerable ein guter Rückgabetyp für Daten, die Filterung ermöglichen?

Antwort

4

Wenn Sie die Objekte im Speicher haben - nicht von einer anderen Datenquelle wie einer Datenbank - verwenden Sie IEnumerable<T>. Auf diese Weise wird das integrierte LINQ to Objects automatisch funktionieren.

Sie könnten LINQ sogar auf Objekte erweitern, indem Sie benutzerdefinierte Erweiterungsmethoden schreiben und yield return und yield break verwenden.

Wenn Sie Entity Framework oder ein anderes System verwenden, das IQueryable<T> verwendet, würde ich es als IQueryable<T> behalten, bis Sie es als Objekte benötigen.

0

Kommt drauf an.

Wenn Sie zuerst alle Daten empfangen und anschließend den zurückgegebenen Satz Objekte filtern möchten, verwenden Sie IEnumerable.

Wenn Sie das Filtern auf der Datenbank aktivieren möchten (z. B. Linq-to-sql/Entity Framework), verwenden Sie besser IQueryable.

Verwandte Themen