Tengo una consulta HQL que puede generar un IList de resultados o un IEnumerable de resultados.
Sin embargo, quiero que devuelva una matriz de la entidad que estoy seleccionando, ¿cuál sería la mejor manera de lograrlo? Puedo enumerarlo y construir la matriz, o usar CopyTo () una matriz definida.
¿Hay alguna forma mejor? Fui con el enfoque CopyTo.
c#
nhibernate
jishi
fuente
fuente
Respuestas:
¿Qué versión de .NET estás usando? Si es .NET 3.5, simplemente llamaría
ToArray()
y terminaría.Si solo tiene un IEnumerable no genérico, haga algo como esto:
Si no conoce el tipo dentro de ese método, pero las personas que llaman al método lo conocen, haga que el método sea genérico y pruebe esto:
fuente
object[]
uso justoCast<object>
. ElIEnumerable
no genérico no tiene unToArray
método de extensión, por lo que no puede simplemente llamarfoo.ToArray<object>
ni nada por el estilo.ToArray
método de extensión está en elSystem.Linq
espacio de nombres, se cree que sería bueno saberlo :).Pon lo siguiente en tu archivo .cs:
A continuación, podrá utilizar el siguiente método de extensión de System.Linq.Enumerable:
Es decir
fuente
Tengo ganas de reinventar la rueda ...
fuente
ToArray()
llamada (a través de laBuffer
clase interna ) ... aunque si alguien esperaba el "estándar "Copiar comportamiento, se sorprenderían bastante.IEnumerable.ToArray()
En caso de que no tengas Linq, lo resolví de la siguiente manera:
Espero eso ayude
fuente