#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. Спасибо, Фабио, это очень помогает!