0
如果我要進行總結,我與走在前面:如何計算DataTable的列的差異?
private static double ColumnSummation(DataTable dt, string columnName)
{
var sum = dt.AsEnumerable().Sum(x => x.Field<double>(columnName));
return sum;
}
現在,如果我必須執行列的減法,我怎麼可以繼續,因爲沒有減法擴展方法...有還有其他方式嗎?
請幫
您仍然可以使用Sum()函數,只有其他值應該是負數。 – hallie 2011-03-21 03:49:50
你需要清楚什麼減掉了什麼(第1行減去所有其他行,或者所有行都減去最後一行?) - 這就是沒有標準SUBTRACT聚合函數的原因。求和是確定性的 - 只需添加所有內容 - 但是在減法中,順序是顯着的(a - b <> b - a)。 – 2011-03-21 03:59:14
@hallie,數據庫表不能保證按順序枚舉,並且LINQ的SUM不能保證按順序調用lambda表達式,所以你不能談論「第一」行和「其他」行。一般來說,您不應該將帶有副作用的lambda表達式放入聚合函數中 - 但如果您需要跟蹤「第一」行和「其他」行,則需要引入這樣的副作用。 – 2011-03-21 04:00:12