В чем разница switch expression и switch statement?
switch-statement - это обычный switch, который
int result;
switch(something) {
case "a":
  result = 1;
  break;
case "b":
  result = 2;
  break;
default:
  result = 3;
  break;
}
switch-expression - это новый вид управляющей конструкции, который добавили в C# 8
var result = something switch {
    "a" => 1,
    "b" => 2,
     _ => 3
}
Его особенности по сравнению с switch-statement:
1. Он exhaustive - это значит, что компилятор заставит вас обработать все возможные варианты, в отличие от switch-statement
2. Это выражение. Это значит, что результат его выполнения можно положить в переменную.

switch-expression относится к switch-statement также, как тернарный оператор относится к if.

Подробнее читать тут:
https://docs.microsoft.com/en-us/dotnet/csharp/lan...
https://docs.microsoft.com/en-us/dotnet/csharp/lan...
Switch statement - это инструкция ветвления направления исполнения кода в зависимости от условия.

Switch expression (хотя правильнее было бы назвать Switch function) - это фактически функция, которая выбирает одно из альтернативных выражений для вычисления значения в зависимости от условий.