C# просто не умеет использовать переменные в паттерн-матчинге и switch-case.
В этом случае можно написать так:
var matched = obj != null && obj.Id == variable;
Ну или так, если кейс более сложный:
var matched = obj is { Id: var id} && id == variable;