J'ai une requête HQL qui peut générer soit une IList de résultats, soit un IEnumerable de résultats.
Cependant, je veux qu'il renvoie un tableau de l'entité que je sélectionne, quelle serait la meilleure façon d'y parvenir? Je peux soit énumérer et construire le tableau, soit utiliser CopyTo () un tableau défini.
Y a-t-il une meilleure façon? J'ai opté pour l'approche CopyTo.
c#
nhibernate
jishi
la source
la source
Réponses:
Quelle version de .NET utilisez-vous? Si c'est .NET 3.5, j'appellerais juste
ToArray()
et en finirais avec lui.Si vous n'avez qu'un IEnumerable non générique, faites quelque chose comme ceci:
Si vous ne connaissez pas le type dans cette méthode mais que les appelants de la méthode le savent, rendez la méthode générique et essayez ceci:
la source
object[]
utilisation justeCast<object>
. Le non génériqueIEnumerable
n'a pas deToArray
méthode d'extension, vous ne pouvez donc pas simplement appelerfoo.ToArray<object>
ou quelque chose comme ça.ToArray
méthode d'extension est dans l'System.Linq
espace de noms, je pense que cela pourrait être bon à savoir :).Mettez ce qui suit dans votre fichier .cs:
Vous pourrez alors utiliser la méthode d'extension suivante à partir de System.Linq.Enumerable:
C'est à dire
la source
J'ai envie de réinventer la roue ...
la source
ToArray()
appel (via laBuffer
classe interne ) ... bien que si quelqu'un attendait le "standard "copiez le comportement, ils seraient assez surpris.IEnumerable.ToArray()
Au cas où vous n'auriez pas Linq, je l'ai résolu de la manière suivante:
J'espère que ça aide
la source