Eu tenho uma consulta HQL que pode gerar um IList de resultados ou um IEnumerable de resultados.
Porém, eu quero que ele retorne um array da Entidade que estou selecionando, qual seria a melhor maneira de fazer isso? Posso enumerar por meio dele e construir a matriz ou usar CopyTo () uma matriz definida.
Existe alguma maneira melhor? Eu escolhi a abordagem CopyTo.
c#
nhibernate
jishi
fonte
fonte
Respostas:
Qual versão do .NET você está usando? Se for .NET 3.5, eu simplesmente chamaria
ToArray()
e pronto.Se você tiver apenas um IEnumerable não genérico, faça algo assim:
Se você não conhece o tipo dentro desse método, mas os chamadores do método o conhecem, torne o método genérico e tente o seguinte:
fonte
object[]
apenas um uso justoCast<object>
. O não genéricoIEnumerable
não tem umToArray
método de extensão, então você não pode simplesmente chamarfoo.ToArray<object>
ou algo parecido.ToArray
método de extensão está noSystem.Linq
namespace, talvez seja bom saber :).Coloque o seguinte em seu arquivo .cs:
Você poderá então usar o seguinte método de extensão de System.Linq.Enumerable:
Ie
fonte
Tenho vontade de reinventar a roda ...
fonte
ToArray()
chamada (por meio daBuffer
classe interna ) ... embora se alguém esperasse o "padrão "comportamento de cópia, eles ficariam bastante surpresos.IEnumerable.ToArray()
Caso você não tenha o Linq, resolvi da seguinte forma:
Espero que ajude
fonte