首页 > 解决方案 > 遍历两个列表并查看值是否匹配的最快方法

问题描述

我有两个从不同数据库生成的单独列表。然后,我通过查找匹配的 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;


        }



    }

最快、最有效的方法是什么?谢谢您的帮助!

标签: c#performancelinq

解决方案


var result = poshData.poshSerialNumbers
    .Where(x => x.Key == foundTerminal.terminalID)
    .FirstOrDefault();

推荐阅读