2014-11-13 1 views
-1

Linq를 C#의 DataTable에로드하려고합니다. 아래 코드를 사용했지만 컴파일 중일 때 specified cast is not valid 예외가 발생했습니다.LinT를 C#의 DataTable로 변환 '지정된 캐스트가 유효하지 않습니다.'예외

DataTable dt = new DataTable(); 
dt.Columns.Add("ID", typeof(int)); 
dt.Columns.Add("Name", typeof(int)); 
dt.Columns.Add("MobileNumber", typeof(int)); 
dt.Columns.Add("Address", typeof(int)); 
dt.Columns.Add("FatherName", typeof(int)); 
var results = 
    from table1 in tree.AsEnumerable() 
    join table2 in direct.AsEnumerable() 
     on (int)table1["ID"] equals (int)table2["ID"] 
select new 
{ 
    ID = (int)table1["ID"], 
    Name = (int)table1["Name"], 
    MobileNumber = (int)table1["MobileNumber"], 
    Address = (int)table2["Address"], 
    FatherName = (int)table2["FatherName"], 
}; 
foreach (var item in results) 
{ 
    DataRow dr = dt.NewRow(); 
    dr["ID"] = item.ID; 
    dr["Name"] = item.Name; 
    dr["MobileNumber"] = item.MobileNumber; 
    dr["Address"] = item.Address; 
    dr["FatherName"] = item.FatherName; 
    dt.Rows.Add(dr); 
} 
+1

어떤 라인이 예외를 유발합니까? –

+0

#Line ** foreach (결과의 var item) ** – DevEnv

답변

1

모든 열의 유형은 int입니다. 나는 이름, 이동 전화 번호, 그리고 FatherName이 문자열이라고 가정 할 것이다.

+0

그 이유가 아닙니다. 커서가이 줄 자체에 도달하면 예외가 발생합니다. #Line foreach (결과의 var item) – DevEnv

+2

그 라인은 '결과'를 평가하는 곳이기 때문에 일련의 블라인드 캐스트를 시도합니다. –

관련 문제