读书人

计算datatable跟值

发布时间: 2012-09-18 16:21:42 作者: rapoo

计算datatable和值
计算datatable数据
之前的逻辑就不说了

id name age money
1 张一 10 10
2 张二 15 20
3 张三 20 30
4 张四 18 40
5 张五 25 50


怎么计算最后2条数据的和
最后得出来的table,并且修改name 不知道有没这个功能
id name age money
1 张一 10 10
2 张二 15 20
3 张三 20 30
4 其他 43 90


[解决办法]
基本是这个意思,适当调整

C# code
DataTable dt2 = dt1.Copy();            dt2.Clear();            int age = 0;            int money = 0;            for (int i = 0; i < dt1.Rows.Count; i++)            {                if (i < 3)                    dt2.Rows.Add(dt1.Rows[i]);                else {                    age += int.Parse(dt1.Rows[i]["age"].ToString());                    money += int.Parse(dt1.Rows[i]["money"].ToString());                }            }            DataRow dr2 = dt2.NewRow();            dr2["id"] = 4;            dr2["name"] = "其它";            dr2["age"] = age;            dr2["money"] = money;            dt2.Rows.Add(dr2);
[解决办法]
C# code
DataTable dt = CreateDataTable();//得到你的datatable                var result= dt.AsEnumerable().Where((a, index) => index >= dt.Rows.Count - 2).CopyToDataTable<DataRow>();                dt = dt.AsEnumerable().Where((a, index) => index < dt.Rows.Count - 2).CopyToDataTable<DataRow>();                DataRow dr = dt.NewRow();                dr["ID"] = dt.AsEnumerable().Last().Field<int>("ID") + 1;                dr["name"] = "其他";                dr["age"] = result.Compute("sum(age)",null);                dr["money"] = result.Compute("sum(money)", null); ;                dt.Rows.Add(dr);                //此时dt已符合要求
[解决办法]
C# code
        DataTable dt = new DataTable();        dt.Columns.Add("id", typeof(int));        dt.Columns.Add("name", typeof(string));        dt.Columns.Add("age", typeof(int));        dt.Columns.Add("money", typeof(int));        dt.Rows.Add(1, "张一", 10, 10);        dt.Rows.Add(2, "张二", 15, 20);        dt.Rows.Add(3, "张三", 20, 30);        dt.Rows.Add(4, "张四", 18, 40);        dt.Rows.Add(5, "张五", 25, 50);        int ageSum = (int)dt.Rows[dt.Rows.Count - 2]["age"] + (int)dt.Rows[dt.Rows.Count - 1]["age"];        int moneySum = (int)dt.Rows[dt.Rows.Count - 2]["money"] + (int)dt.Rows[dt.Rows.Count - 1]["money"];        dt.Rows.RemoveAt(dt.Rows.Count - 1);        dt.Rows[dt.Rows.Count - 1]["name"] = "其他";        dt.Rows[dt.Rows.Count - 1]["age"] = ageSum;        dt.Rows[dt.Rows.Count - 1]["money"] = moneySum; 

读书人网 >C#

热点推荐