2012-08-22 2 views
1

오류가 qRow에 있습니다. 어떻게 linq이 문제를 해결할 수 있습니까? 나는 행운이 대답을 찾으려고 노력했다.원본 형식 'System.Data.DataRow'에 대한 쿼리 패턴의 구현을 찾을 수 없습니다. '가입'을 찾을 수 없습니다.

IEnumerable<DataColumn> iCols = (from i in Interlocks 
     join r in Results on i.InterlockID equals r.InterlockID 
     where r.StationType.Equals("RT") && r.LineID.Equals("1") && r.TestNo == 1 && r.StationID == 1 
     && i.SerialNumber.Equals("C11205150001") && (r.DateTested >= DateTime.Now.AddMonths(-48) && r.DateTested <= DateTime.Now) 
     select new { i.SerialNumber,i.ModelNumber,r.DateTested,r.InterlockID,r.ResultID,r.ProgramDescription,r.TestStatus,r.CycleTime}).Distinct().Cast<DataColumn>(); 
interlock.Columns.Add("SerialNumber",Type.GetType("System.String")); 
interlock.Columns.Add("ModelNumber", Type.GetType("System.String")); 
interlock.Columns.Add("DateTested", Type.GetType("System.DateTime")); 
interlock.Columns.Add("InterlockID", Type.GetType("System.Int32")); 
interlock.Columns.Add("ResultID",Type.GetType("System.Int32")); 
interlock.Columns.Add("ProgramDescription",Type.GetType("System.String")); 
interlock.Columns.Add("CycleTime", Type.GetType("System.Int32")); 
interlock.Columns.AddRange(iCols.ToArray()); 
interlock.AcceptChanges(); 

foreach (DataRow qRow in interlock.Rows) 
{ 
    var details = (from d in qRow 
      join rd in Results_Details on d.ResultID equals rd.ResultID 
      select new {d.DateTested,d.ResultID,rd.ResultNameID,rd.ResultValue}).Distinct(); 
+1

전체 오류 메시지와 오류가 발생하는 정확한 위치를 알려주지 않았으므로 판단하기가 약간 어렵습니다 (_ "qRow'에서 _는 실제로 모호합니다).하지만 어셈블리 참조 ('System.Data.DataSetExtensions.dll') 또는'using' 지시문이 누락 되었습니까? – stakx

답변

1

DataTable 강한 형식화되지 않습니다, 당신은 DataRow's Field extension를 사용하거나 그에 따라 개체를 캐스팅해야합니다.

from d in qRow 
join rd in Results_Details on d.Field<String>("ResultID") equals rd.ResultID 

또한 stakx 언급 한 바와 같이 referenceto System.Data.DataSetExtensions.dllusing System.Data;을 추가해야합니다.

관련 문제