void readdata(ASort asort, string asortname, DataTable dt) { asort.name = asortname + "-收益率敏感性"; IEnumerable <string> g = dt.AsEnumerable().Where(p => p.Field <string>("asort") == asortname && p.Field <string>("csort") != "基本方案").GroupBy(p => p.Field <string>("csort")).Select(p => p.Key); foreach (string key in g) { Ana ana = new Ana(); asort.anas.Add(ana); IEnumerable <DataRow> drs = dt.AsEnumerable().Where(p => p.Field <string>("asort") == asortname && (p.Field <string>("csort") == key || p.Field <string>("csort") == "基本方案")).OrderBy(p => p.Field <double>("v1")); ana.kp = new Point[drs.Count()]; ana.name = key; int idx = 0; foreach (DataRow dr in drs) { GridDataRow gd = new GridDataRow() { name = key }; double tmp = double.Parse(dr["v1"].ToString()); gd.changeorg = (tmp > 0 ? "+" : "") + tmp.ToString("f0") + "%"; double tmp1 = double.Parse(dr["v2"].ToString()); gd.changedest = tmp1.ToString("f2") + "%"; double tmp2 = double.Parse(dr["v3"].ToString()); gd.changerate = tmp == 0 ? "" : (tmp2.ToString("f2") + "%"); gd.senesitive = tmp == 0?0: tmp2 / tmp;// tmp==0?"": (tmp2 / tmp).ToString("f2"); ana.griddata.Add(gd); ana.kp[idx] = new Point(tmp, tmp1); idx++; } } }
private void UserControl_Initialized(object sender, EventArgs e) { string sql = "select t1 as asort, t2 as csort, v1, v2, v3 from map_data2 where sort='收益率敏感分析' order by ord"; DataTable dt = DataLayer.DataProvider.getDataTableFromSQL(sql); IEnumerable <string> g = dt.AsEnumerable().GroupBy(p => p.Field <string>("asort")).Select(p => p.Key); foreach (string sortname in g) { ASort asort = new ASort(); viewmodel.sorts.Add(asort); readdata(asort, sortname, dt); } viewmodel.cal(); grdMain.DataContext = viewmodel; }