Daten effizient verarbeiten: DataReader in List konvertieren
Wenn Sie Daten in einer .NET-Umgebung verarbeiten, möchten Sie möglicherweise einen DataReader (einen Datenstrom, der nur vorwärts liest) in ein besser verwaltbares Format konvertieren, z. B. eine Liste
Lösung: Erweiterungsmethoden
Eine Möglichkeit zur Konvertierung besteht darin, Erweiterungsmethoden zu verwenden. Ein Beispiel ist wie folgt:
<code class="language-csharp">public static IEnumerable<T> Select<T>(this IDataReader reader, Func<IDataReader, T> projection) { while (reader.Read()) { yield return projection(reader); } }</code>
Mit dieser Erweiterungsmethode können Sie Projektionsfunktionen verwenden, um Daten aus einem DataReader auszuwählen und in ein IEnumerable zu konvertieren
Nutzungsbeispiele
Um Daten in eine Liste zu konvertieren
<code class="language-csharp">using (IDataReader reader = ...) { List<Customer> customers = reader.Select(r => new Customer { CustomerId = r["id"] is DBNull ? null : r["id"].ToString(), CustomerName = r["name"] is DBNull ? null : r["name"].ToString() }).ToList(); }</code>
In diesem Beispiel werden die Zeilen im DataReader in eine Liste von Kundenobjekten konvertiert.
Alternative: spezialisierte Methoden für Entitätstypen
Alternativ können Sie eine dedizierte statische Methode in der Kundenentität erstellen:
<code class="language-csharp">public static Customer FromDataReader(IDataReader reader) { ... }</code>
Diese Methode ist für die Erstellung eines Kundenobjekts basierend auf den Daten im DataReader verantwortlich.
Mit dieser Methode können Sie den Konvertierungsprozess vereinfachen:
<code class="language-csharp">using (IDataReader reader = ...) { List<Customer> customers = reader.Select<Customer>(Customer.FromDataReader) .ToList(); }</code>
Durch diese Techniken können Sie die Daten in DataReader effizient in List konvertieren
Das obige ist der detaillierte Inhalt vonWie kann ich einen DataReader effizient in eine Liste in .NET konvertieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!