DB 쿼리결과를 IDataReader 로 처리하는 경우 이 객체를 이용해 값을 하나씩 읽어와
원하는 T Type 으로 List<T> 로 만들어주는 방법입니다.
아래 메서드를 활용하여 DataReader 를 이용 Row 값을 가져와 원하는 T Type 으로 값을 넣어 반환해 줍니다.
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;
}
사용방법은 만약 Person 이라는 Class 를 정의하고 해당 타입으로 쿼리 결과를 담고 싶은 경우
아래처럼 사용합니다.
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);
}
}
}
C# NATS 를 이용해 Streaming Server 구성하기 (0) | 2024.03.03 |
---|---|
C# Quartz Scheduler 사용하기 - Cron 표기법 사용 (0) | 2024.02.29 |
C# ExpandoObject 객체 Property 값 알아내는 방법 (0) | 2024.02.27 |
C# Edge Browser 열기 (0) | 2024.02.23 |
C# ExpandObject 사용하여 동적 데이터 다루기 (0) | 2024.02.23 |