c# - 如何简化具有多个 OR 案例的 if 条件

标签 c#

<分区>

我在 C# 中有如下条件:

if( myString.Contains("UCK") OR
    myString.Contains("SAN") OR
    myString.Contains("AVB") OR
    myString.Contains("AVM") OR
    myString.Contains("SDS") OR
    myString.Contains("DWW") OR
    myString.Contains("WQP") OR
    myString.Contains("LHG") OR
  )
{
 mySecondString = "CATEGORY A";
}

else if( myString.Contains("UCT") OR
    myString.Contains("SAM") OR
    myString.Contains("AHJB") OR
    myString.Contains("AVR") OR
  )
{
 mySecondString = "CATEGORY B";
}

else if( myString.Contains("UKC") OR
    myString.Contains("SHZ") OR
    myString.Contains("EEB") OR
  )
{
 mySecondString = "CATEGORY C";
}

else  mySecondString = "CATEGORY D";

我想让它更专业。您建议的最佳方法是什么?

谢谢

最佳答案

使用 extension method :

public static bool ContainsAny(this string self, params string[] criteria)
{
    foreach (string s in criteria)
    {
        if (self.Contains(s))
        {
            return true;
        }
    }
    return false;
}

这样调用它:

if (myString.ContainsAny("UCK", "SAN", "AVB", "AVM", "SDS", "DWW", "WQP", "LHG"))
{
    mySecondString = "CATEGORY A";
}

else if (myString.ContainsAny("UCT", "SAM", "AHJB", "AVR"))
{
    mySecondString = "CATEGORY B";
}

else if (myString.ContainsAny("UKC", "SHZ", "EEB"))
{
    mySecondString = "CATEGORY C";
}

else
{
    mySecondString = "CATEGORY D";
}

关于c# - 如何简化具有多个 OR 案例的 if 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38339535/

相关文章:

c# - 使用相同 NuGet 包的两个不同版本

c# - 从 DataTable 的列创建 HashSet

c# - SqlDataReader 检查空值的最佳方法-sqlDataReader.IsDBNull 与 DBNull.Value

c# - 如何解决无效对象名称 'dbo.AspNetUsers' 错误?

c# - 在 SSH.NET 中使用 PPK key 进行身份验证

c# - 调用 Web 服务时出现类型未定义错误

c# - iTextSharp ShowTextAligned anchor

c# - 调用GetInstance方法后,实例的简单注入(inject)器注册

c# - 在对话框关闭 WPF 时更新父窗口

c# - 何时在 C# 类声明中使用 get 和 set