быстрое копирование значений double[] во весь столбец в таблице данных

#c# #linq #datatable

#c# #linq #datatable

Вопрос:

У меня есть вопрос о назначении значений массива ( double[] ) в столбец в таблице данных на C #. Я извлек double[] из столбца в моей таблице данных, как показано ниже.

 double[] ToBeChanged = mydatatable.AsEnumerable().Select(s => s.Field<double>("column")).ToArray<double>();
  

После обновления некоторых значений ToBeChanged я хочу быстро вернуть его в исходный столбец. Как я могу реализовать это как можно проще или быстрее?

Ответ №1:

Одним из подходов было бы использование .Zip метода

 var pairs = mydatatable.AsEnumerble().Zip(toBeChanged, (row, value) => (row, value));

foreach (var (row, value) in pairs)
{
    row.SetField("column", value);
}
  

Но я бы не советовал использовать его для производственного кода, потому что корректность будет полностью зависеть от предположения, что строки и значения упорядочены правильно.

Другие возможные подходы могут быть:

  • Обновите значения внутри DataTable .
  • Передайте DataRow экземпляр методу, который обновит значения
  • Используйте словарь, чтобы связать обновляемые значения со значением идентификации строки.

Комментарии:

1. Спасибо, Фабио, это очень помогает!