我想要一些像switch语句(但当然不同)

Jer*_*acs 3 c# c#-4.0

是否有一个C#构造就像switch允许控制进入下一级别的语句一样?我有这样的事情:

    public static IEnumerable<string> SeverityOrHigher(string severity)
    {
        var result = new List<string>();

        switch (severity.ToUpper())
        {
            case "ALL":
                result.Add("ALL");
            case "DEBUG":
                result.Add("DEBUG");
            case "INFO":
                result.Add("INFO");
            case "WARN":
                result.Add("WARN");
            case "ERROR":
                result.Add("ERROR");
            case "FATAL":
                result.Add("FATAL");
            case "OFF":
                result.Add("OFF");
            default:
                break;
        }

        return result;
    }
Run Code Online (Sandbox Code Playgroud)

......显然在C#中不起作用,(Control cannot fall through from one case label...)但在我看来它应该是这样的.我知道它预计会有中断,但这不会给我提供我正在寻找的数据流.有什么办法可以按照我喜欢的方式实现?

nem*_*esv 10

在你的情况下,你可以用一点LINQ来模拟"坠落的情况":

public static IEnumerable<string> SeverityOrHigher(string severity)
{
    var result = new List<string>() 
        { "ALL", "DEBUG", "INFO", "WARN", "ERROR", "FATAL", "OFF" };
    return result.SkipWhile(l => l != severity.ToUpper()).ToArray();
}
Run Code Online (Sandbox Code Playgroud)