Saya memiliki kueri HQL yang dapat menghasilkan IList hasil, atau hasil IE yang tak terhitung banyaknya.
Namun, saya ingin mengembalikan array Entitas yang saya pilih, apa cara terbaik untuk mencapai itu? Saya bisa menghitung melaluinya dan membangun array, atau menggunakan CopyTo () array yang ditentukan.
Apakah ada cara yang lebih baik? Saya menggunakan pendekatan CopyTo.
c#
nhibernate
jishi
sumber
sumber
Jawaban:
Versi .NET manakah yang Anda gunakan? Jika itu .NET 3.5, saya akan menelepon
ToArray()
dan selesai dengannya.Jika Anda hanya memiliki IEnumerable non-generik, lakukan sesuatu seperti ini:
Jika Anda tidak mengetahui tipe dalam metode itu tetapi pemanggil metode mengetahuinya, buat metode itu umum dan coba ini:
sumber
object[]
menggunakan sajaCast<object>
. NongenericIEnumerable
tidak memilikiToArray
metode ekstensi, jadi Anda tidak bisa hanya meneleponfoo.ToArray<object>
atau semacamnya.ToArray
metode ekstensi dalamSystem.Linq
namespace, berpikir bahwa mungkin baik untuk mengetahui :).Letakkan yang berikut ini di file .cs Anda:
Anda kemudian akan dapat menggunakan metode ekstensi berikut dari System.Linq.Enumerable:
Yaitu
sumber
Saya merasa ingin menemukan kembali roda ...
sumber
ToArray()
panggilan (melaluiBuffer
kelas internal ) ... meskipun jika ada yang mengharapkan "standar "meniru perilaku, mereka akan sangat terkejut.IEnumerable.ToArray()
Jika Anda tidak memiliki Linq, saya menyelesaikannya dengan cara berikut:
Semoga membantu
sumber