Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menukar DataReader dengan Cekap kepada Senarai dalam .NET?
Proses data dengan cekap: Tukar DataReader ke Senarai
Apabila memproses data dalam persekitaran .NET, anda mungkin mahu menukar DataReader (strim data yang hanya dibaca ke hadapan) kepada format yang lebih terurus, seperti Senarai
Penyelesaian: Kaedah sambungan
Satu cara untuk menukar adalah menggunakan kaedah sambungan. Contohnya adalah seperti berikut:
<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>
Kaedah sambungan ini membolehkan anda menggunakan fungsi unjuran untuk memilih data daripada DataReader dan menukarnya kepada IEnumerable
Contoh penggunaan
Untuk menukar data kepada Senarai
<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>
Contoh ini menukarkan baris dalam DataReader kepada senarai objek Pelanggan.
Alternatif: kaedah khusus untuk jenis entiti
Sebagai alternatif, anda boleh membuat kaedah statik khusus dalam entiti Pelanggan:
<code class="language-csharp">public static Customer FromDataReader(IDataReader reader) { ... }</code>
Kaedah ini bertanggungjawab untuk mencipta objek Pelanggan berdasarkan data dalam DataReader.
Menggunakan kaedah ini, anda boleh memudahkan proses penukaran:
<code class="language-csharp">using (IDataReader reader = ...) { List<Customer> customers = reader.Select<Customer>(Customer.FromDataReader) .ToList(); }</code>
Melalui teknik ini, anda boleh menukar data dalam DataReader ke Senarai dengan cekap
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar DataReader dengan Cekap kepada Senarai dalam .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!