ссылочное значение в выражениях DataColumn - PullRequest
2 голосов
/ 01 марта 2012

с учетом выражения, подобного этому

 DataTable1.Columns.Add("value", typeof(double), "rate * loan_amt");

в таблице данных с 10000 строками, где ставка одинакова для всех строк, а loan_amt изменяется

При изменении ставки она изменяется для всех текущих, которыеозначает итерацию по всем строкам, например,

 foreach(DataRow dr in DataTable1.Rows) dr["rate"] = new_rate;

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

 DataTable1.Columns.Add("value", typeof(double), "RefTable.Row0.rate * loan_amt");

так что изменить курс будет так же просто, как

 RefTable.Rows[0]["rate"] = new_rate;

Или любым другим способом?

Ответы [ 2 ]

0 голосов
/ 06 марта 2012

нашел ответ, добавив его для тех, кто может приземлиться здесь

Ключ должен добавить DataRelation между двумя таблицами / столбцами, и выражение будет

Parent.rate * loan_amt
0 голосов
/ 02 марта 2012

Это хорошая идея, но вам придется переписывать каждый раз, когда к данным обращались в устаревшем коде.Это, безусловно, сделает обновления скорости более эффективными, но вы можете столкнуться с проблемами обратной совместимости.

Если их не так много, обращаясь к этой таблице, тогда это не такая уж большая проблема, но если этоэто производственная система с несколькими процессами, вызывающими эти данные, которые вы можете получить с помощью бегущей последовательности исключений с нулевым значением при попытке получить доступ к столбцу «rate» исходной таблицы, или несоответствия для вашего «value» в зависимости от того, какой код обращался к какой таблицечтобы получить скорость.

Если это не так, то это не страшно.Перейти на это.

...