给定这样的表达式
DataTable1.Columns.Add("value", typeof(double), "rate * loan_amt");
在一个有10000行的数据表中,所有行的速率相同,loan_amt的不同
当速率发生变化时,所有速率都会发生变化目前,这意味着像一样迭代所有行
foreach(DataRow dr in DataTable1.Rows) dr["rate"] = new_rate;
想知道是否有更好的方法在同一个DataSet中使用ReferenceTable(只有1行)并以某种方式将其链接为
DataTable1.Columns.Add("value", typeof(double), "RefTable.Row0.rate * loan_amt");
所以改变速率就像一样简单
RefTable.Rows[0]["rate"] = new_rate;
或者其他方式?
这是个好主意,但您必须在任何时候重写遗留代码中访问的数据。它肯定会使速率更新更高效,但您可能会遇到反向兼容性问题。
如果他们没有太多代码访问该表,那也没什么大不了的,但如果这是一个有多个进程调用该数据的生产系统,那么在试图访问原始表的"速率"列时,你可能会遇到一连串失控的空值异常,或者你的"值"不一致,这取决于哪个代码访问了哪个表来检索速率。
如果不是这样,那也没什么大不了的。去吧。
找到了答案,并为其他可能在这里着陆的添加了答案
关键是在两个表/列之间添加一个DataRelation,表达式将是
Parent.rate * loan_amt