Умножение столбцов в дататабле - PullRequest
6 голосов
/ 16 ноября 2011

У меня есть дата в C # со столбцом «цена» и столбцом «распределение», и мне нужно умножить столбец цены на столбец распределения и поместить результат в столбец цены. Есть ли способ обойтись без зацикливания на столе? Я пробовал что-то вроде этого:

DataTable dt = getData();
dt.Columns["Price"].Expression = "Allocation * Price";

Но, очевидно, это дает мне следующее исключение:

Cannot set Expression property due to circular reference in the expression.

Кто-нибудь знает другой способ сделать это? Заранее спасибо.

Ответы [ 4 ]

4 голосов
/ 16 ноября 2011

Вы можете использовать выражение LINQ, чтобы сделать это в одной строке:

dt.Rows.ForEach(x => x["Price"] = (double)x["Price"] * (double)x["Allocation"]);
2 голосов
/ 16 ноября 2011

Вы можете просто добавить еще один столбец в таблицу данных:

dt.Columns.Add("TotalPrice", typeof(decimal));
dt["TotalPrice"] = "Allocation * Price";
1 голос
/ 16 ноября 2011

Добавьте новый столбец, значение которого рассчитывается из двух других:

dt.Columns.Add("TotalPrice", typeof(decimal), "Allocation * Price");

. При таком подходе TotalPrice всегда будет актуальным, если вы измените Price или Allocation

0 голосов
/ 16 ноября 2011

Если у вас нет отдельного столбца, что произойдет, когда что-то заставит вычисление выполнить снова ...

В какой-то момент количество кода, которое вам нужно добавить, сгибает данные, чтобы сделать то, что вы хотите(без введения массы потенциальных функций) будет больше усилий, чем просто подбросить класс для хранения вещей.

Чтение из таблицы данных Запись из базы данных не сложна и не привязана к списку вещей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...