Mam kwerendę HQL, która może generować IList wyników lub IEnumerable wyników.
Jednak chcę, aby zwracała tablicę encji, którą wybieram, jaki byłby najlepszy sposób osiągnięcia tego? Mogę wyliczyć przez to i zbudować tablicę lub użyć CopyTo () zdefiniowanej tablicy.
Czy jest lepszy sposób? Poszedłem z podejściem CopyTo.
c#
nhibernate
jishi
źródło
źródło
Odpowiedzi:
Której wersji .NET używasz? Jeśli to .NET 3.5, po prostu zadzwonię
ToArray()
i skończę z tym.Jeśli masz tylko nieogólną IEnumerable, zrób coś takiego:
Jeśli nie znasz typu w tej metodzie, ale wywołujące metodę ją znają, utwórz metodę ogólną i wypróbuj to:
źródło
object[]
po prostu użyćCast<object>
. NongenericIEnumerable
nie maToArray
metody rozszerzenia, więc nie możesz po prostu zadzwonićfoo.ToArray<object>
ani nic takiego.ToArray
rozszerzenia znajduje się wSystem.Linq
przestrzeni nazw, myślę, że warto ją znać :).Umieść w pliku .cs:
Będziesz wtedy mógł użyć następującej metody rozszerzenia z System.Linq.Enumerable:
To znaczy
źródło
Mam ochotę na nowo wynaleźć koło ...
źródło
ToArray()
wywołaniu (przez wewnętrznąBuffer
klasę) ... chociaż jeśli ktoś spodziewał się "standardu „zachowanie kopiowania, byliby bardzo zaskoczeni.IEnumerable.ToArray()
Jeśli nie masz Linq, rozwiązałem to w następujący sposób:
Mam nadzieję, że to pomoże
źródło