日期:2014-05-17 浏览次数:20516 次
public static DataTable GetTable(DataTable dt) { DataRow dataRow = dt.NewRow(); int result = 0; foreach (DataRow row in dt.Rows) { result += int.Parse(row["number"].ToString()); } dataRow["number"] = result; dt.Rows.Add(dataRow); if (dt.Rows.Count == 6) { return dt; } else { return GetTable(dt); } }
------解决方案--------------------
那不是一个循环就可以了?就2行代码:
DataTable dt = new DataTable(); dt.Columns.Add("id", typeof(int)); dt.Columns.Add("sum", typeof(int)); dt.Rows.Add(1, 2); dt.Rows.Add(2, 3); dt.Rows.Add(3, 4); dt.Rows.Add(4, 5); for (int i = 1; i < dt.Rows.Count; i++) dt.Rows[i]["sum"] = (int)dt.Rows[i - 1]["sum"] + (int)dt.Rows[i]["sum"];
------解决方案--------------------
DataTable dt = new DataTable(); dt.Columns.Add("id", typeof(int)); dt.Columns.Add("sum", typeof(int)); dt.Rows.Add(1, 2); dt.Rows.Add(2, 3); dt.Rows.Add(3, 4); dt.Rows.Add(4, 5); dt = dt.AsEnumerable().Select(a => { DataRow dr = dt.NewRow(); object o = dt.Compute("sum(sum)", "id<=" + a.Field<int>("id")); int sum=0; int.TryParse(o.ToString(),out sum); dr["id"] = a.Field<int>("id"); dr["sum"] = sum; return dr; }).CopyToDataTable<DataRow>(); //此时 DataTable数据如下 /* id sum 1 2 2 5 3 9 4 14 */