高效處理資料:將DataReader轉換為List
在.NET環境中處理資料時,您可能需要將DataReader(只向前讀取的資料流)轉換為更易於管理的格式,例如List
解:擴充方法
一種轉換方法是使用擴充方法。例如下:
<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>
此擴充方法可讓您使用投影函數從DataReader中選取資料並將其轉換為IEnumerable
使用方法範例
要將資料轉換為List
<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>
此範例將DataReader中的行轉換為Customer物件的清單。
替代方法:針對實體類型的專用方法
或者,您可以在Customer實體中建立一個專用的靜態方法:
<code class="language-csharp">public static Customer FromDataReader(IDataReader reader) { ... }</code>
此方法負責根據DataReader中的資料建立Customer物件。
使用此方法,您可以簡化轉換過程:
<code class="language-csharp">using (IDataReader reader = ...) { List<Customer> customers = reader.Select<Customer>(Customer.FromDataReader) .ToList(); }</code>
透過這些技術,您可以有效地將DataReader中的資料轉換為List
以上是如何在.NET 中有效率地將 DataReader 轉換為清單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!