반응형
IList 또는 IEnumerable을 배열로 변환하는 가장 좋은 방법
결과 IList 또는 IEnumerable 결과를 생성 할 수있는 HQL 쿼리가 있습니다.
그러나 내가 선택한 엔티티의 배열을 반환하고 싶습니다.이를 수행하는 가장 좋은 방법은 무엇입니까? 이를 통해 열거하고 배열을 만들거나 정의 된 배열에 CopyTo ()를 사용할 수 있습니다.
더 좋은 방법이 있습니까? CopyTo 접근 방식을 사용했습니다.
어떤 버전의 .NET을 사용하고 있습니까? .NET 3.5라면 그냥 전화 ToArray()
해서 끝낼 것입니다.
제네릭이 아닌 IEnumerable 만있는 경우 다음과 같이하십시오.
IEnumerable query = ...;
MyEntityType[] array = query.Cast<MyEntityType>().ToArray();
해당 메서드 내의 형식을 모르지만 메서드 호출자가 알고있는 경우 메서드를 제네릭으로 만들고 다음을 시도하십시오.
public static void T[] PerformQuery<T>()
{
IEnumerable query = ...;
T[] array = query.Cast<T>().ToArray();
return array;
}
.cs 파일에 다음을 입력하십시오.
using System.Linq;
그러면 System.Linq.Enumerable에서 다음 확장 메서드를 사용할 수 있습니다.
public static TSource[] ToArray<TSource>(this System.Collections.Generic.IEnumerable<TSource> source)
즉
IEnumerable<object> query = ...;
object[] bob = query.ToArray();
나는 바퀴를 재발 명하고 싶다 ...
public static T[] ConvertToArray<T>(this IEnumerable<T> enumerable)
{
if (enumerable == null)
throw new ArgumentNullException("enumerable");
return enumerable as T[] ?? enumerable.ToArray();
}
Linq가없는 경우 다음과 같이 해결했습니다.
private T[] GetArray<T>(IList<T> iList) where T: new()
{
var result = new T[iList.Count];
iList.CopyTo(result, 0);
return result;
}
도움이되기를 바랍니다.
참고 URL : https://stackoverflow.com/questions/268671/best-way-to-convert-ilist-or-ienumerable-to-array
반응형
'programing tip' 카테고리의 다른 글
0x 표기법을 사용하는 숫자는 무엇을 의미합니까? (0) | 2020.09.06 |
---|---|
XML 요소에 대한 표준 명명 규칙이 있습니까? (0) | 2020.09.06 |
중첩 된 HTML 주석이 가능합니까? (0) | 2020.09.05 |
CMake를 사용하여 CTest에서 자세한 출력을 얻으려면 어떻게해야합니까? (0) | 2020.09.05 |
node.js가 설치되었는지 확인하는 방법 (0) | 2020.09.05 |