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
반응형
그리드형
'C#' 카테고리의 다른 글
[C#] ExpandoObject 로 정의된 객체 필드 및 값 구하기 (0) | 2023.09.16 |
---|---|
[C#] 현재 컴퓨터의 OS 종류 및 버전 가져오기 (0) | 2023.09.16 |
[C#] HttpClientHandler 사용 시 SSL 무시하기 (HttpClient) (0) | 2023.09.13 |
[C#] SocketsHttpHandler 사용 시 SSL 무시하기 (HttpClient) (0) | 2023.09.13 |
[C#] IHttpClientFactory 및 Polly 정책을 통해 HTTP 호출 재시도 구현하기 (0) | 2023.09.11 |