首页 > 解决方案 > 如果超过 20000 个用户点击,for 循环会花费太多时间

问题描述

这里我有 2 个数据表,我想在运行时进行一些更改,所以我使用了 2 个 for 循环。但是当用户点击量达到 20k+ 时,系统就会崩溃。每次点击都需要2多分钟,我想优化,有人可以帮忙吗?

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; }
    }
}

标签: c#for-loopoptimizationquery-optimization

解决方案


推荐阅读