반응형
참 많이 쓰는데..
프로젝트 때 마다 새로 만들어 쓰는거 같다. ㅡ.ㅡa
이젠 나이가 먹었나 할 때마다 생각이 안나고..
생각난 김에 만들어 놨다. ㅎㅎ
참조해서 사용 하세요
/// <summary> /// DataTable을 Entity List로 반환 합니다. /// </summary> /// <typeparam name="T">Entity Object</typeparam> /// <param name="dt">변환할 DataTable</param> /// <returns> 변환한 Object</returns> private List<T> ConvertToEntityList<T>(DataTable dt) { if (dt == null) return new List<T>(); var columnNames = dt.Columns.Cast<DataColumn>() .Select(c => c.ColumnName.ToUpper()) .ToList(); var properties = typeof(T).GetProperties(); return dt.AsEnumerable().Select(row => { var objT = Activator.CreateInstance<T>(); int i = 0; foreach (var pro in properties) { if (columnNames.Contains(pro.Name.ToUpper())) { // Property Type 이 Boolean 일 경우 , DB 에서 true 를 확인 하는 구문 if (pro.PropertyType.Name == "Boolean") { if (row[pro.Name.ToUpper()].ToString().Equals("true") || row[pro.Name.ToUpper()].ToString().Equals("1") ) pro.SetValue(objT, true, null); else pro.SetValue(objT, false, null); } else { // 데이터가 DBNull 일 때 null로 변환 if (row[pro.Name.ToUpper()].GetType().Name.Equals("DBNull")) { pro.SetValue(objT, null, null); } else { pro.SetValue(objT, row[pro.Name.ToUpper()], null); } } i++; } } return objT; }).ToList(); }
반응형
'Development > c#' 카테고리의 다른 글
C# Obsolete Attribute (특성) (0) | 2015.01.09 |
---|---|
[C#] 확장 메서드 (0) | 2015.01.09 |
C# Entity를 Json string으로 변환 (0) | 2014.12.19 |
C#에서 DataMember의 Name 가져오기 (0) | 2014.12.05 |
[C#] WinForm,에서 popup Window가 항상 최상에 위치 (0) | 2014.11.19 |