Here I have 2 datatables, I want to make some changes runtime, so I used 2 for loops. But when user hit is huge like 20k+, system get down. It took more than 2 minutes every hit, I want to optimize, can anyone help on this?
Datatable BuybackResponse = ResourceCenterDAL.GetBuyBack(2);;
Datatable dt = ResourceCenterDAL.GetBuyBack(4);;
if (BuybackResponse.Count > 0)
{
    for (int i = 0; i < dt.Rows.Count; i++)
    {
        for (int k = 0; k < BuybackResponse.Count; k++)
        {
            var Exch = !string.IsNullOrEmpty(Convert.ToString(dt.Rows[i]["Nsetradingsymbol"])) ? "NSE" : "BSE";
            //if (Exch == BuyBackExchangeMapping[Convert.ToInt32(BuybackResponse[k]["Exchange"])] &&
            if (BuybackResponse[k]["ProductCode"].Trim().ToLower() == Convert.ToString(dt.Rows[i]["Nsetradingsymbol"]).Trim().ToLower() ||
              BuybackResponse[k]["ProductCode"].Trim().ToLower() == Convert.ToString(dt.Rows[i]["Bsetradingsymbol"]).Trim().ToLower())
            {
                if (!Convert.ToString(dt.Rows[i]["isBuyBack"]).Trim().ToLower().Equals("y"))
                    dt.Rows[i]["isBuyBack"] = "Y";
                dt.Rows[i]["productcode"] = BuybackResponse[k]["ProductCode"];
                BBcount++;
            }
            else
            {
                if (string.IsNullOrEmpty(Convert.ToString(dt.Rows[i]["isBuyBack"])))
                    dt.Rows[i]["isBuyBack"] = "N";
            }
        }
        if (BBcount.Equals(BuybackResponse.Count)) { break; }
    }
}