programing tip

IList 또는 IEnumerable을 배열로 변환하는 가장 좋은 방법

itbloger 2020. 9. 5. 09:26
반응형

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

반응형