У меня есть запрос HQL, который может генерировать либо список результатов, либо IEnumerable результатов.
Однако я хочу, чтобы он возвращал массив объекта, который я выбираю, что было бы лучшим способом для этого? Я могу либо перечислить его и построить массив, либо использовать CopyTo () для определенного массива.
Есть ли способ лучше? Я пошел с CopyTo-подходом.
c#
nhibernate
дзиси
источник
источник
Ответы:
Какую версию .NET вы используете? Если это .NET 3.5, я бы просто позвонил
ToArray()
и покончил с этим.Если у вас есть только не общий IEnumerable, сделайте что-то вроде этого:
Если вы не знаете тип в этом методе, но вызывающие методы его знают, сделайте метод универсальным и попробуйте следующее:
источник
object[]
просто использоватьCast<object>
. НеуниверсальныйIEnumerable
не имеетToArray
метода расширения, поэтому вы не можете просто вызватьfoo.ToArray<object>
или что-то в этом роде.ToArray
расширения находится вSystem.Linq
пространстве имен, подумал, что было бы полезно знать :).Поместите в свой файл .cs следующее:
После этого вы сможете использовать следующий метод расширения из System.Linq.Enumerable:
Т.е.
источник
Я хочу изобретать велосипед ...
источник
ToArray()
вызове (через внутреннийBuffer
класс) ... хотя, если кто-то ожидал "стандартного" "копировать поведение, они были бы очень удивлены.IEnumerable.ToArray()
Если у вас нет Linq, я решил это следующим образом:
Надеюсь, поможет
источник