Как перемножить/поделить строки в таблице?

bstshell

Client
Регистрация
03.06.2015
Сообщения
56
Благодарностей
4
Баллы
8
Всем привет! Есть таблица с двумя заполненными столбцами. Задача: число из столбца А разделить на число из столбца Б и результат положить в столбец Ц.

Сделал это на кубиках с перебором в цикле, но таблица очень большая и считает он долго. Подскажите как можно это сделать быстрее?
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 119
Баллы
113
C#:
IZennoTable table = project.Tables["Table"];
lock (SyncObjects.TableSyncer) {
    for (int i = 0; i < table.RowCount; i++)
        table.SetCell("C", i, (double.Parse(table.GetCell("A", i)) / double.Parse(table.GetCell("B", i))).ToString());
}
 

bstshell

Client
Регистрация
03.06.2015
Сообщения
56
Благодарностей
4
Баллы
8
Спасибо тебе, добрый человек!
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 119
Баллы
113
Чтоб не возникало проблем со строками, в которых данные не числа (в т.ч. пустые строки) и региональными настройками, лучше использовать такой код:
C#:
IZennoTable table = project.Tables["Table"];
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
string a, b;
double res;

lock (SyncObjects.TableSyncer) {
    for (int i = 0; i < table.RowCount; i++) {
        a = table.GetCell("A", i).Replace(',', '.');
        b = table.GetCell("B", i).Replace(',', '.');
        if (double.TryParse(a, out res) && double.TryParse(b, out res))
            table.SetCell("C", i, (double.Parse(a) / double.Parse(b)).ToString());
    }
}
 
  • Спасибо
Реакции: K R

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)