2012-04-02 6 views
0

DataTable에서 특정 DataRow를 찾아서 업데이트하려고합니다. 나는 내 검색을 기반으로 몇 가지를 시도했고 아래 코드는 내가 얻을 수있는 가장 가까운 것으로 보인다. linq는 한 행을 반환합니다. 그 행에서 열 값 (Status, StopTime, Duration)을 업데이트하고 싶습니다. 나는 내 인생을 위해 이것을 할 수있는 방법을 찾을 수 없다. 나는 주조를 시도했지만 linq에 익숙하지 않고 이러한 값을 업데이트하는 방법을 알지 못한다.C#에서 LINQ로 DataRow를 업데이트하려고 시도했습니다.

private DataTable downloadProcStatusTable; 

void UpdateDataDownloadProcedureList(ProcedureStats ProcStats)   
{ 
     var currentStatRow = from currentStat in downloadProcStatusTable.AsEnumerable() 
          where currentStat.Field<String>("ProcedureName") == ProcStats.ProcName 
          select currentStat; 
} 

답변

2

귀하의 쿼리로 ... 정확히 확인하지 않았다. 당신은 실제 행을 얻기 위해이 작업을 수행 할 필요가 :

var currentStatRow = (from currentStat in downloadProcStatusTable.AsEnumerable() 
         where currentStat.Field<String>("ProcedureName") == ProcStats.ProcName 
         select currentStat).SingleOrDefault(); 

당신은 다음 열 값을 수정 currentStatRow 변수를 사용할 수 있어야합니다.

+0

고마워요, 나는 모든 설정입니다. – StatsViaCsh

1

개요

  1. 로드 데이터베이스에서 기존 엔티티
  2. 업데이트 속성으로 (당신은 당신이 추가 쿼리를 피할 수있는 경우에 당신은 다시 연결할 수 있습니다 하나를하지 않는 한)
  3. SubmitChanges()

Implem를 사용하여 데이터베이스에 다시 변경 사항을 제출하여 필요 당신의 변수이며, 이름, 그러나 이것은 당신에게 좋은 출발을해야하는 위치 entation

나는 실제로 서 당신에게 IEnumerable<DataRow>을 제공

void UpdateDataDownloadProcedureList(ProcedureStats ProcStats)   
    { 
      var currentStatRow = (from currentStat in downloadProcStatusTable.AsEnumerable() 
           where currentStat.Field<String>("ProcedureName") == ProcStats.ProcName 
           select currentStat).FirstOrDefault(); 

     currentStatRow.Status = ProcStats.Status; 
     currentStatRow.StopTime = ProcStats.StopTime; 
     currentStatRow.Duration = ProcStats.Duration; 

     downloadProcStatusTable.SubmitChanges(); 
    } 
+0

감사합니다. currentStatRow [ "Status"] = ProcStats.Status; 작동 코드입니다 .. – StatsViaCsh

관련 문제