首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

datatable 增添数据行

2013-06-25 
datatable 添加数据行我 dt里 存的数据 是 这样的Name,percentOidMONEYA,B,C0.2,0.3,0.411000A,B,D0.3,0.1

datatable 添加数据行
我 dt  里 存的数据 是 这样的
Name  ,  percent          Oid     MONEY
A,B,C     0.2,0.3,0.4    1        1000
A,B,D     0.3,0.1,0.5     2       500

我 想 给他们显示成这样

NAME      PERCENT      OID         MONEY
A           0.2         1           1000*0.2  后的值
B            0.3         1           1000* 0.3 后的值
......
依次类推 ,  这样 如何实现 ,求高手 给个思路
[解决办法]
笨方法~~


        List<Model> lst = new List<Model>();
        foreach (DataRow dr in dt.Rows)
        {
            string[] strsName = dr["Name"].ToString().Split(',');
            string[] strsPercent = dr["percent"].ToString().Split(',');
            string strOid = dr["Oid"].ToString();
            decimal intMoney = decimal.Parse(dr["Money"].ToString());
            lst.AddRange(strsName.Select((t, i) => new Model
                                                       {
                                                           Name = t,
                                                           Percent = strsPercent[i],
                                                           Oid = strOid,


                                                           Money = intMoney * decimal.Parse(strsPercent[i])
                                                       }));
        }


[解决办法]
按你的要求写一个

DataTable dtbl = new DataTable();
            dtbl.Columns.Add("Name", typeof(string));
            dtbl.Columns.Add("percent", typeof(string));
            dtbl.Columns.Add("Oid", typeof(int));
            dtbl.Columns.Add("MONEY", typeof(string));

            DataRow dr =dtbl.NewRow();
            dr["Name"] = "A,B,C";
            dr["percent"] = "0.2,0.3,0.4";
            dr["Oid"] = 1;
            dr["MONEY"] = "1000";
            dtbl.Rows.InsertAt(dr, 0);

            DataRow dr1 = dtbl.NewRow();
            dr1["Name"] = "A,B,D";
            dr1["percent"] = "0.3,0.1,0.5";
            dr1["Oid"] = 2;
            dr1["MONEY"] = "500";
            dtbl.Rows.InsertAt(dr1, 1);

            DataTable dtblResult = dtbl.Clone();

            foreach (DataRow row in dtbl.Rows)
            {
                for (int i = 0; i < dr["Name"].ToString().Split(',').Length; i++)
                {
                    DataRow drNew = dtblResult.NewRow();
                    drNew["Name"] = row["Name"].ToString().Split(',')[i].ToString();
                    drNew["percent"] = row["percent"].ToString().Split(',')[i].ToString();


                    drNew["Oid"] = row["Oid"].ToString();
                    drNew["MONEY"] = row["MONEY"].ToString() + "*" + row["percent"].ToString().Split(',')[i].ToString();
                    dtblResult.Rows.Add(drNew);
                }
            }


datatable 增添数据行

热点排行