c# - 遍历两个列表并查看值是否匹配的最快方法
问题描述
我有两个从不同数据库生成的单独列表。然后,我通过查找匹配的 ID 来比较这两者,如果 ID 匹配,我会分配一些变量。我遇到的问题是我迭代和比较的方式是在 LINQ 中使用 find 方法。在处理大量数据时,这似乎很慢。这是我的代码
private void GetSerialNumber(POSHData poshData, MerchantTerminal foundTerminal)
{
var result = poshData.poshSerialNumbers.Find(x => x.termid == foundTerminal.terminalID);
if (result != null)
{
foundTerminal.terminalSerialNumber = result.terminalSerialNumber;
foundTerminal.pinPadSerialNumber = result.pinPadSerialNumber;
foundTerminal.appName = result.appName;
foundTerminal.appVersion = result.appVersion;
foundTerminal.pINPadRecord = result.pinPadRecord;
foundTerminal.terminalRecord = result.terminalRecord;
foundTerminal.LastTransactionDateTime = result.LastTransaction;
if (foundTerminal.pinPadSerialNumber.Length == 0)
{
foundTerminal.pinPadSerialNumber = result.pinPadSerialNumber;
}
switch (result.SettlementType)
{
case "2":
foundTerminal.PABX = "Journal";
break;
case "3":
foundTerminal.PABX = "Batch Close Required";
break;
default:
foundTerminal.PABX = "Unknown";
break;
}
foundTerminal.AdviceText = result.tranAdjust;
foundTerminal.AuthOnly = result.tranAuthOnly;
}
}
最快、最有效的方法是什么?谢谢您的帮助!
解决方案
var result = poshData.poshSerialNumbers
.Where(x => x.Key == foundTerminal.terminalID)
.FirstOrDefault();
推荐阅读
- docker - 在 docker 容器中以特定用户身份执行命令
- html - CA Agile Central 故事(按功能)
- spring-boot - Angular ts(前端)+ spring boot(后端)OAuth2流程
- php - 即使服务器响应发生变化,Angular 5 http 请求也会始终被缓存
- git - Git:更新文件夹(拉或取?)保持本地更改(不覆盖)
- couchbase - couchbase 存储桶上的大量 KV 操作(插入、更新插入)导致 concurrent.timeout.Exception
- javascript - 在 jQuery 中获取所选选项的总和时找不到整数或找不到整数错误?
- python - 简化嵌套字典
- c++ - 是否可以使用 C11 atomics 包含 C 标头而无需在 C++ 中进行修改?
- python-3.x - 更新的 Python to_csv 输出文件大小被放大