c# - 如果超过 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; }
}
}
解决方案
推荐阅读
- python - 如何获得时间序列 LSTM keras 模型的“平均值”?
- javascript - Reduce 函数返回赋值抛出错误(ESLint 问题:no-return-assign)
- html - 如何使用网格正确堆叠弹性项目(弹性:9999 hack)
- c# - Couchbase Lite 2.0.0 C# 不区分大小写的查询
- python - 如何使用 pandas 检查每月刻度数据 csv 中的每日刻度数据?
- java - apache spark2.3.0 使用 master 作为纱线启动时,失败并出现错误找不到或加载主类 org.apache.spark.deploy.yarn.ApplicationMaster
- javascript - 在 Google Maps Directions API 提供的现有 Lat/Lng 之间生成新的 Lat/Lng
- javascript - Discord.js API 不可见标识符
- react-native - react-native 嵌套 StackNavigator 传递参数
- pandas - 重新索引以在多索引数据框中插入缺失的行