given an expression like so

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

in a datatable with 10000 rows where rate is same for all rows and loan_amt varies

When the rate changes, it changes for all currently that means iterating through all rows like so

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

wondering if there,s a better way using a ReferenceTable (with only 1 row ) in the same DataSet and linking it somehow like so

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

so changing the rate would be as simple as

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

Or any other way ?

有帮助吗?

解决方案 2

found the answer, adding it for others who might land here

Key is to add a DataRelation between the two tables/columns and the expression would be

Parent.rate * loan_amt

其他提示

That is a good idea, but you would have to rewrite any time that data was accessed in legacy code. It would certainly make updates to the rate more efficient, but you may run into issues with reverse compatibility.

If their isn't much code accessing that table then it isn't such a big deal, but if this is a production system with multiple processes calling that data you might end up with a runaway train of null value exceptions when trying to access the "rate" column of the original table, or inconsistencies for your "value" depending on which code accessed which table to retrieve the rate.

If this is not the case, then it's no big deal. Go for it.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top