Попытка обновить DataRow в C # с помощью LINQ - PullRequest
0 голосов
/ 02 апреля 2012

Я пытаюсь найти, а затем обновить определенный DataRow в DataTable. Я попробовал несколько вещей, основанных на моих поисках, и приведенный ниже код, кажется, самый близкий, который я могу получить. LINQ вернет одну строку. В этой строке я хотел бы обновить значения столбцов (Status, StopTime, Duration). Я не могу на всю жизнь найти, как это сделать .. Я пробовал приведение, но я новичок в linq и не вижу, как обновить эти значения.

private DataTable downloadProcStatusTable;

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

Ответы [ 2 ]

2 голосов
/ 02 апреля 2012

Ваш запрос на самом деле дает вам IEnumerable<DataRow>. Вам нужно сделать это, чтобы получить актуальную строку:

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

После этого вы сможете использовать переменную currentStatRow для изменения значений столбца.

1 голос
/ 02 апреля 2012

Outline

  1. Загрузка существующего объекта из базы данных (если только у вас нет объекта, который вы можете повторно присоединить, в этом случае вы можете избежать этого дополнительного запроса)
  2. Обновите свойства по мере необходимости
  3. Отправьте изменения обратно в базу данных, используя SubmitChanges()

Осуществление

Я не был точно уверен, где ваши переменные и имена, но это должно дать вам хорошее начало ...

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();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...