728x90
728x170

DataReader 를 이용해  List<T> 로 변환하는 방법입니다.

아래의 메서드를 이용하여  DataReader를 인자로 던지면 쿼리 결과 데이터를 List<T> 로 변환됩니다.

 

public List<T> DataReaderToList<T>(IDataReader reader) where T : new()
{
    List<T> list = new List<T>();

    while (reader.Read())
    {
        T obj = new T();

        for (int i = 0; i < reader.FieldCount; i++)
        {
            string propertyName = reader.GetName(i);
            object value = reader.GetValue(i);

            var property = obj.GetType().GetProperty(propertyName);

            if (property != null && value != DBNull.Value)
            {
                property.SetValue(obj, value);
            }
        }

        list.Add(obj);
    }

    return list;
}

 

사용예시

string connectionString = "YourConnectionStringHere";
string query = "SELECT Id, Name, Age FROM People";

using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();

    using (SqlCommand command = new SqlCommand(query, connection))
    {
        using (IDataReader reader = command.ExecuteReader())
        {
            // DataReader to List<T>
            List<Person> people = DataReaderToList<Person>(reader);
        }
    }
}
728x90
그리드형
Posted by kjun
,