try this
for (int i = 0; i < dsreq.Tables[0].Rows.Count; i++)
{
DataRow dr = dt.NewRow();
dr["AMOUNT"] = Convert.ToDecimal(dsreq.Tables[0].Rows[i]["AMT"]);
if (dsreq.Tables[0].Rows[i]["FLAG"].ToString() == "D")
{
dr["DUE DATE"] = dsreq.Tables[0].Rows[i]["DATE1"].ToString();
}
else
{
dr["PAYMENT DATE"] = Convert.ToDecimal(dsreq.Tables[0].Rows[i]["DATE1"].ToString());
}
dr["EMI RECEIVED"] = Convert.ToDecimal(dsreq.Tables[0].Rows[i]["INSTALLMENT AMOUNT"]);
dr["OD CHRGS RECEIVED"] = Convert.ToDecimal(dsreq.Tables[0].Rows[i]["AFC/OTHER AMOUNT"]);
dt.Rows.Add(dr);
}
cast the values based on the type defined in the table column