C#でのSwitch式で同処理を複数条件下で分岐したい場合


以下のようなコードで値が0と1の時の処理をまとめたいのですが、Switch式でそれは可能でしょうか？環境は、.Net Core 3.0です。

[code]

    var res = val switch {
      0 => A(),
      1 => A(),
      2 => B(),
      _ => throw new Exception()
    };
    
[/code]




出来ない状況に変わりは無いですが、C# 9.0に向けて機能追加が議論されているようです。

[Multiple switch cases? #15241](https://github.com/dotnet/docs/issues/15241)  
[Proposed changes for Pattern Matching in C# 9.0 - Draft Specification
#2850](https://github.com/dotnet/csharplang/issues/2850)  
いろんな書き方が提案され、結構長い記事になっています。

以下は @sayuri さん回答と同等内容の英語版記事  
[c# 8 switch expression multiple cases with same
result](https://stackoverflow.com/q/56676260/9014308)

こちらは C# 9.0への提案に言及した記事  
[Multiple cases in c# 8.0 switch
expressions](https://stackoverflow.com/q/55510463/9014308)




F#だとORパターンがあるので書けるんですが、

[code]

    let res = match ``val`` with
              | 0 | 1 -> A()
              | 2     -> B ()
              | _     -> failwith ""
    
[/code]

C#だとパターンは発展途上なため書きようがないかも。

[code]

    var res = val switch {
      _ when val == 0 || val == 1 => A(),
      2 => B(),
      _ => throw new Exception(),
    };
    
[/code]

