2012-05-16 2 views
9

LinQ를 사용하여 쿼리를 작성했으며 CopyToDataTable 메서드를 사용했습니다. 그 줄에서 내 데이터베이스 유형에서 암시 적 변환 유형 오류가 System.Data.DataRow으로 표시됩니다.IQueryable을 DataTable로 변환하는 방법

var query = from i in dbContext.Personaldetails 
      where i.ID == 1 
      select i; 

      return query.CopyToDataTable(); 

의견이 있으십니까?

답변

5

CopyToDataTable에는 DataRow 개체가 필요합니다. 이 문제를 해결하는 방법 : Implement CopyToDataTable Where the Generic Type T Is Not a DataRow을 참조하십시오.

업데이트 : 엔터티에 nullable 필드가있는 경우 ObjectShredder.ExtendTable 메서드를 수정할 수 있습니다. (를 DataColumn 클래스는 널 (NULL) 데이터 형식을 지원하지 않습니다) 컬럼의 데이터 유형을 제공 두 번째 매개 변수를, 새로운 열이 테이블에 추가되는 장소를 찾아 제거 :

foreach (PropertyInfo p in type.GetProperties()) 
{ 
    if (!_ordinalMap.ContainsKey(p.Name)) 
    { 
     DataColumn dc = table.Columns.Contains(p.Name) ? table.Columns[p.Name] 
      // do not provide column type 
      : table.Columns.Add(p.Name); 

     _ordinalMap.Add(p.Name, dc.Ordinal); 
    } 
} 
+0

나는하지만 query.copytodatatable에서 그 로직을 구현 한 암시 적 변환 유형이 아닌 오류가 표시됩니다. – steve

+0

@nanicharan LINQ에서 데이터 셋에 이르는 것이 아닌'CustomLINQtoDataSetMethods'를 사용해야합니다. –

+0

동일한 방법을 사용했습니다. 코드를 보내 드리겠습니다. 한 번 확인하십시오. – steve

관련 문제