2015-01-02 6 views
7

안녕 DbContext 결과를 DataTable으로 변환하려고합니다. 나는 class, 즉 ClientTemplateModelinheritsDbContext 인 것을 가지고 있습니다. 이 클래스에는 하나의 DbSet 개체, 즉 public virtual DbSet<imagecomment> ImageComments { get; set; }이 있습니다. 코드 첫 번째 엔터티 프레임 워크을 사용하고 있습니다.DbContext를 코드에서 첫 번째 엔터티 프레임 워크로 변환

내 검색어입니다.

using (ClientTemplateModel context = new ClientTemplateModel(connectionString)) 
{ 
    var result = context.ImageComments.Where(p => p.Dcn == dcn).OrderByDescending(p => p.CommentsDateTime); 
} 

은 내가 여기 있나이다 DataTableresult을 변환 할 수 있습니다. 어떻게 변환 할 수 있습니까?

답변

11
msdn

를 참조하십시오 전에 확장 방법을 사용하지 않은 경우, 당신은 코드

public static DataTable ToDataTable<T>(this IList<T> data) 
    { 
     PropertyDescriptorCollection properties = 
      TypeDescriptor.GetProperties(typeof(T)); 
     DataTable table = new DataTable(); 
     foreach (PropertyDescriptor prop in properties) 
      table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType); 
     foreach (T item in data) 
     { 
      DataRow row = table.NewRow(); 
      foreach (PropertyDescriptor prop in properties) 
       row[prop.Name] = prop.GetValue(item) ?? DBNull.Value; 
      table.Rows.Add(row); 
     } 
     return table; 
    } 

에 따라, 대신 IList의의 된 IQueryable /는 IEnumerable을 사용하여 데이터 테이블에 당신의 일반 목록을 변환 확장 방법을 사용할 수 있습니다

출처 : https://stackoverflow.com/a/5805044/1018054

희망이 있습니다!

+0

답장을 보내 주셔서 감사합니다. 어떻게 부를 수 있니? –

+0

확장 메서드를 사용했지만 내 경우에는이 메서드를 어떻게 호출 할 수 있습니까? –

+0

정적 클래스 및이 메서드를 내부에 만든 다음 result.ToDatatable(), i hv msdn ref 주어진 수 있습니다. 이것에 대해 더 자세히 알아 보시기 바랍니다 .. –