Попробуйте:
var max = myTable.Rows.Cast<DataRow>().Max(r => r.Field<double>("Column 3"));
foreach (var row in myTable.Rows.Cast<DataRow>())
{
row["Column 3"] = row.Field<double>("Column 3") / max;
}
Исполняемый тестовый код:
var myTable = new DataTable();
myTable.Columns.Add("Column 3", typeof(double));
myTable.Rows.Add(20_00_000);
myTable.Rows.Add(250_000);
myTable.Rows.Add(185_000);
myTable.Rows.Add(400_000);
myTable.Rows.Add(750_000);
Console.WriteLine(String.Join(", ", myTable.Rows.Cast<DataRow>().Select(r => r.Field<double>("Column 3"))));
var max = myTable.Rows.Cast<DataRow>().Max(r => r.Field<double>("Column 3"));
foreach (var row in myTable.Rows.Cast<DataRow>())
{
row["Column 3"] = row.Field<double>("Column 3") / max;
}
Console.WriteLine(String.Join(", ", myTable.Rows.Cast<DataRow>().Select(r => r.Field<double>("Column 3"))));
Это выводит:
2000000, 250000, 185000, 400000, 750000
1, 0.125, 0.0925, 0.2, 0.375
Обновление на основе"Столбец 3" - это int
.
Console.WriteLine(String.Join(", ", myTable.Rows.Cast<DataRow>().Select(r => r.Field<int>("Column 3"))));
int max = myTable.Rows.Cast<DataRow>().Max(r => r.Field<int>("Column 3"));
double[] results = myTable.Rows.Cast<DataRow>().Select(r => (double)r.Field<int>("Column 3") / max).ToArray();
Console.WriteLine(String.Join(", ", results));
Теперь просто внесите в индекс results
, когда вы создадите DataGridView
.