반응형
1. 필요성 : DataGrid의 변경값 체크용 DataTable생성에 사용할 수 있습니다.
2. 변환방법 : ItemSource에 바인딩한 클래스와 리스트형 데이터를 가지고 DataTable로 변환을 합니다.
3. 샘플코드
/// <summary>
/// DataGrid를DataTable로변환
/// </summary>
/// <typeparam name="T">클래스명</typeparam>
/// <param name="data">변환할데이터리스트</param>
/// <returns>DataTable</returns>
public static DataTable DataGridToDataTable<T>(this List<T> data)
{
//변환테이블생성
var properties = TypeDescriptor.GetProperties(typeof(T));
var table = new DataTable();
var now = DateTime.Now;
foreach (PropertyDescriptor prop in properties)
{
//테이블컬럼생성
table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
}
//변환할 데이터값이null이 아닌경우
if (data != null)
{
foreach (T item in data)
{
var row = table.NewRow();
foreach (PropertyDescriptor prop in properties)
{
//컬럼별 값설정
row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;
}
table.Rows.Add(row);
}
}
return table;
}
반응형
'C#' 카테고리의 다른 글
C# 성능 최적화 코드 작성 방법과 예제 (0) | 2023.08.22 |
---|---|
같은DataTable간의 데이터가 일치하는지 확인하는 방법 (0) | 2023.02.28 |
Linq의 처리속도개선 방법 (0) | 2022.06.27 |
BackgroundWorker이벤트에 설정된 처리(DoWork)를 취소하는 방법 (0) | 2022.04.20 |
C# Linq의 Group By가 복수로 필요할 경우의 처리방법 (0) | 2022.01.31 |
댓글