c# - 减少代码C#中的多个foreach循环

标签 c# foreach

我写了一个非常凌乱的代码,只是因为我不知道如何遍历多个对象列表。

代码正在按预期的方式工作,但我对此没有信心。
有人知道如何重构这种代码以使其更具可读性吗?

foreach (var outlet in merchant.Outlets)
{
    if (outlet != null)
    {
        foreach (var terminal in merchant.Terminals)
        {
            if (terminal != null)
            {
                foreach (var agreement in terminal.AssociateAgreements)
                {
                    var bankInfo = new Bank();
                    if (agreement != null)
                    {
                        bankInfo.UniqueID = AgreementUniqueCode + agreement.ID;
                        bankInfo.BankBIC = agreement.BankAccountInformation.SwiftBIC;
                        bankInfo.BankName = agreement.BankAccountInformation.BankName;
                        bankInfo.Address =
                            AddressEntityToAddress(agreement.BankAccountInformation.BankAddress,
                                BankingType);

                        bankInfo.type = BankType;
                    }
                    banksAccountInformation.Add(bankInfo);
                }
            }
        }
    }
} 

最佳答案

您还可以使用linq查询语法:

var outletQuery = from outlet in merchant.Outlets
                  where outlet != null
                  select outlet;

var agreementQuery = from terminal in merchant.Terminals
                     where terminal != null
                     from agreement in terminal.AssociateAgreements
                     select agreement;

foreach (var outlet in outletQuery)
{
    foreach (var agreement in agreementQuery)
    {
       ProcessAgreement(agreement);
    }
}

关于c# - 减少代码C#中的多个foreach循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37205893/

相关文章:

c# - 当每个索引只能有一个映射时,将渗透器存储在单独的索引中吗?

arrays - 如何在数组中(在Powershell中)使用数字字符串进行操作?

perl - 三元运算符不允许在其中使用迭代运算符,但 if-else 允许吗?

c# - WPF ICommand.Execute on UI, XP

c# - 默认接口(interface)方法。现在,抽象类和接口(interface)之间有什么深刻意义的区别?

javascript - 通过Javascript中的键按字母顺序对对象的对象进行排序

c# - ForEach 用于 Linq 中的列表列表

c++ - 如何计算 "count_if"- 字符串的 STL 函数?

c# - 使用 C# 和 WFC 的跨域 jQuery Ajax

c# - ASP.NET C# 如何从数据库填充表