2012-04-02 13 views
0

DataTable内の特定のDataRowを見つけて更新しようとしています。私は検索に基づいていくつかのことを試しましたが、以下のコードは私が得ることができる最も近いようです。 linqは1行を返します。その行では、列の値(Status、StopTime、Duration)を更新したいと思います。私は私の人生のためにこれを行う方法を見つけることはできません..私はキャストしようとしましたが、私はlinqには新しく、これらの値を更新する方法を見ていません。LINQでC#で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を使用してデータベースへの変更を提出する必要それは実際にあなたにIEnumerable<DataRow>を与えるスタンドとしてentation

は、私はあなたの変数がある場所を正確に確認されませんでしたし、名前が、これはあなたに良いスタートを与える必要があります...

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

関連する問題