>백엔드 개발 >C++ >DataReader를 .NET의 목록으로 효율적으로 변환하려면 어떻게 해야 합니까?

DataReader를 .NET의 목록으로 효율적으로 변환하려면 어떻게 해야 합니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-16 22:17:09982검색

How Can I Efficiently Convert a DataReader into a List in .NET?

효율적인 데이터 처리: DataReader를 List로 변환

.NET 환경에서 데이터를 처리할 때 DataReader(앞으로 읽기만 하는 데이터 스트림)를 List와 같이 보다 관리하기 쉬운 형식으로 변환할 수 있습니다. 이러한 변환을 통해 구조화된 데이터에 보다 효율적으로 액세스하고 처리할 수 있습니다.

해결책: 확장 방법

변환하는 한 가지 방법은 확장 방법을 사용하는 것입니다. 예시는 다음과 같습니다.

<code class="language-csharp">public static IEnumerable<T> Select<T>(this IDataReader reader,
                                       Func<IDataReader, T> projection)
{
    while (reader.Read())
    {
        yield return projection(reader);
    }
}</code>

이 확장 방법을 사용하면 프로젝션 함수를 사용하여 DataReader에서 데이터를 선택하고 이를 IEnumerable로 변환할 수 있습니다.

사용예

데이터를 목록으로 변환하려면 다음 코드를 사용할 수 있습니다.

<code class="language-csharp">using (IDataReader reader = ...)
{
    List<Customer> customers = reader.Select(r => new Customer {
        CustomerId = r["id"] is DBNull ? null : r["id"].ToString(),
        CustomerName = r["name"] is DBNull ? null : r["name"].ToString()
    }).ToList();
}</code>

이 예에서는 DataReader의 행을 Customer 개체 목록으로 변환합니다.

대안: 엔터티 유형에 대한 특수 방법

또는 Customer 엔터티에서 전용 정적 메서드를 만들 수도 있습니다.

<code class="language-csharp">public static Customer FromDataReader(IDataReader reader) { ... }</code>

이 메소드는 DataReader의 데이터를 기반으로 Customer 개체를 생성하는 역할을 합니다.

이 방법을 사용하면 변환 프로세스를 단순화할 수 있습니다.

<code class="language-csharp">using (IDataReader reader = ...)
{
    List<Customer> customers = reader.Select<Customer>(Customer.FromDataReader)
                                     .ToList();
}</code>

이러한 기술을 통해 DataReader의 데이터를 List로 효율적으로 변환할 수 있습니다. 이를 통해 추가 데이터 조작 및 처리에 LINQ의 기능을 활용할 수 있습니다.

위 내용은 DataReader를 .NET의 목록으로 효율적으로 변환하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.