C# DataTable-(亂七八糟-02) 重複列合併-值相加

    DataTable drt = new DataTable();
            //整理-求和

           

    //利用原有基礎表的數據進行整合操作

      //廠家

            DataTable distinctTable = null;
            if (newdt != null && newdt.Rows.Count > 0)
            {
                DataView dv = new DataView(newdt);
                distinctTable = dv.ToTable(true, "category");
            }
            //日期
            DataTable distinctTable_ = null;
            if (newdt != null && newdt.Rows.Count > 0)
            {
                DataView dv = new DataView(newdt);
                distinctTable_ = dv.ToTable(true, "yearmonth");
            } 

            //重新定義DataTable-接收轉換轉換的值
            DataTable newdt_ = new DataTable();
            newdt_.Columns.Add("category", typeof(string));
            newdt_.Columns.Add("yearmonth", typeof(string));
            newdt_.Columns.Add("value", typeof(int)); 
            DataRow drr = newdt_.NewRow();  
            //日期區間大於1
            if (distinctTable_.Rows.Count > 1)

            {  

//日期

                for (int jz = 0; jz < distinctTable_.Rows.Count; jz++)
                {
                    DataRow[] dr_ = newdt.Select("yearmonth='" + distinctTable_.Rows[jz]["yearmonth"].ToString() + "' ");

                    string ym = dr_[jz]["yearmonth"].ToString();

    //廠家

                    for (int j = 0; j < distinctTable.Rows.Count; j++)
                    {
                        DataRow[] dr = newdt.Select("category='" + distinctTable.Rows[j]["category"].ToString() + "' "); 

                        int td = 0;
                        drr = newdt_.NewRow();
                        for (int i = 0; i < dr.Length; i++)

                        {

   //日期-廠家=相同的情況下值相加

                            if (distinctTable_.Rows[jz]["yearmonth"].ToString() == dr[i]["yearmonth"].ToString())
                            {
                                int df = Convert.ToInt32(dr[i]["value"].ToString());
                                td += Convert.ToInt32(dr[i]["value"].ToString());
                            }
                        }
                        drr["category"] = distinctTable.Rows[j]["category"];
                        drr["yearmonth"] = ym;
                        drr["value"] = td;
                        newdt_.Rows.Add(drr); 
                    }
                }
                drt = newdt_;
            }
            else //當日期區間爲1

            {

//廠家

                for (int j = 0; j < distinctTable.Rows.Count; j++)
                {
                    DataRow[] dr = newdt.Select("category='" + distinctTable.Rows[j]["category"].ToString() + "' ");


                    drr = newdt_.NewRow();
                    int sd = 0; 
                    for (int i = 0; i < dr.Length; i++)
                    {
                        int df = Convert.ToInt32(dr[i]["value"].ToString());
                        sd += Convert.ToInt32(dr[i]["value"].ToString());
                    }
                    drr["category"] = distinctTable.Rows[j]["category"];
                    drr["yearmonth"] = distinctTable_.Rows[0]["yearmonth"];//日期固定
                    drr["value"] = sd;
                    newdt_.Rows.Add(drr);
                }
                drt = newdt_;
            } 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章