Ich habe eine HQL-Abfrage, die entweder eine IList von Ergebnissen oder eine IEnumerable von Ergebnissen generieren kann.
Ich möchte jedoch, dass ein Array der von mir ausgewählten Entität zurückgegeben wird. Wie kann dies am besten erreicht werden? Ich kann entweder durchzählen und das Array erstellen oder CopyTo () als definiertes Array verwenden.
Gibt es einen besseren Weg? Ich habe mich für den CopyTo-Ansatz entschieden.
c#
nhibernate
Jishi
quelle
quelle
Antworten:
Welche .NET-Version verwenden Sie? Wenn es sich um .NET 3.5 handelt, würde ich einfach anrufen
ToArray()
und damit fertig sein.Wenn Sie nur eine nicht generische IEnumerable haben, gehen Sie wie folgt vor:
Wenn Sie den Typ in dieser Methode nicht kennen, die Aufrufer der Methode ihn jedoch kennen, machen Sie die Methode generisch und versuchen Sie Folgendes:
quelle
object[]
gerechte Verwendung wünschenCast<object>
. Das NongenericIEnumerable
hat keineToArray
Erweiterungsmethode, Sie können also nicht einfach aufrufenfoo.ToArray<object>
oder ähnliches.ToArray
Erweiterungsmethode befindet sich imSystem.Linq
Namespace, dachte, das wäre gut zu wissen :).Fügen Sie Folgendes in Ihre CS-Datei ein:
Sie können dann die folgende Erweiterungsmethode aus System.Linq.Enumerable verwenden:
Dh
quelle
Ich möchte das Rad neu erfinden ...
quelle
ToArray()
Aufruf (über die interneBuffer
Klasse) ... obwohl, wenn jemand den "Standard" erwartet hat "Kopierverhalten, sie wären ziemlich überrascht.IEnumerable.ToArray()
Falls Sie Linq nicht haben, habe ich es folgendermaßen gelöst:
Ich hoffe es hilft
quelle