Click here to Skip to main content
15,886,067 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
i have a datatable with columns : col1, col2, col3
suppose dataTable have below content

col1 | col2 | col3
100 | 0 | 100
100 | 0 | 100
0 | 150 | 150
0 | 200 | 200
200 | 0 | 200

i want change col3 based on (col3 from previous row) AND (col1 and col2 from current row) with below formula :

col3(current row)=col3(previous row)-(col1(current row)-col2(current row))

after this calculation result datatable must like below :

col1 | col2 | col3
100 | 0 | 100
100 | 0 | 200
0 | 150 | 50
0 | 200 | -150
200 | 0 | 50

thanks a lot
Posted

1 solution

C#
 DataTable dtRawTable = new DataTable();
                DataTable dtFinalised=new DataTable();
                dtFinalised.Columns.Add("Col1",typeof(int));
                dtFinalised.Columns.Add("Col2",typeof(int));
                dtFinalised.Columns.Add("Col3",typeof(int));

for (int index = 0; index <= dtRawTable.Rows.Count; index++)
  {
     DataRow dr = dtFinalised.NewRow();
     if(index%2==0)
     {
      //  col3(current row)=col3(previous row)-(col1(current row)-col2(current row))
     // Please change the formaula acc to you concept
 dr["Col1"] = (Convert.ToInt32(dtRawTable.Rows[index-1]["Col1"].ToString())-(Convert.ToInt32(dtRawTable.Rows[index]["Col1"].ToString())-Convert.ToInt32(dtRawTable.Rows[index-1]["Col2"].ToString())));
dr["Col2"] = (Convert.ToInt32(dtRawTable.Rows[index - 1]["Col2"].ToString()) - (Convert.ToInt32(dtRawTable.Rows[index]["Col1"].ToString()) - Convert.ToInt32(dtRawTable.Rows[index - 1]["Col2"].ToString())));
  dr["Col3"] = (Convert.ToInt32(dtRawTable.Rows[index - 1]["Col3"].ToString()) - (Convert.ToInt32(dtRawTable.Rows[index]["Col1"].ToString()) - Convert.ToInt32(dtRawTable.Rows[index - 1]["Col2"].ToString())));
       }
 else
   {
      dr["Col1"] =Convert.ToInt32(dtRawTable.Rows[index]["Col1"].ToString());
     dr["Col1"] = Convert.ToInt32(dtRawTable.Rows[index]["Col1"].ToString());
     dr["Col1"] = Convert.ToInt32(dtRawTable.Rows[index]["Col1"].ToString());
   }
   dtFinalised.Rows.Add(dr);
   dtFinalised.AcceptChanges();


 }



Please mark it a s Answer if it is useful to u
 
Share this answer
 
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900