public void UpdateSummary(string portfolio) { string[] list = new string[] { "Portfolio Investment", "Portfolio Return If Unchange", "Portfolio Current Return", "Portfolio Theta [day]" }; foreach (string item in list) { bool is_new = false; DataRow row = SummaryTable.FindByCriteria(item); if (row == null) { row = SummaryTable.NewRow(); is_new = true; } row["Criteria"] = item; row["Total"] = DBNull.Value; row["TotalPrc"] = DBNull.Value; if (is_new) { SummaryTable.Rows.Add(row); } SummaryTable.AcceptChanges(); } try { // get portfolio rows DataRow[] portfolio_rows = PortfolioTable.Select("PortfolioMembership LIKE '*" + portfolio + ",*'"); // update net-investment double net_investment = 0; foreach (DataRow prw in portfolio_rows) { net_investment += (double)prw["NetInvestment"]; } DataRow row = SummaryTable.FindByCriteria(list[0]); if (row != null) { row["Total"] = net_investment; } // update return-if-unchange double return_if_unchanged = 0; foreach (DataRow prw in portfolio_rows) { return_if_unchanged += (double)prw["ReturnIfUnchange"]; } row = SummaryTable.FindByCriteria(list[1]); if (row != null) { row["Total"] = return_if_unchanged; double prc = return_if_unchanged / net_investment; if (double.IsNaN(prc)) { row["TotalPrc"] = DBNull.Value; } else { row["TotalPrc"] = prc; } row["IsCredit"] = true; } // update current-return double current_return = 0; foreach (DataRow prw in portfolio_rows) { current_return += (double)prw["CurrentReturn"]; } row = SummaryTable.FindByCriteria(list[2]); if (row != null) { row["Total"] = current_return; double prc = current_return / net_investment; if (double.IsNaN(prc)) { row["TotalPrc"] = DBNull.Value; } else { row["TotalPrc"] = prc; } row["IsCredit"] = true; } // update total-theta double total_theta = 0; foreach (DataRow prw in portfolio_rows) { if (!double.IsNaN((double)prw["TotalTheta"])) { total_theta += (double)prw["TotalTheta"]; } } row = SummaryTable.FindByCriteria(list[3]); if (row != null) { row["Total"] = total_theta; double prc = total_theta / net_investment; if (double.IsNaN(prc)) { row["TotalPrc"] = DBNull.Value; } else { row["TotalPrc"] = prc; } row["IsCredit"] = true; } } catch { } }