Для вас такая реализация такой операции, выполняемой с помощью Roslyn, является геморной? Ну тогда боюсь огорчу вас: это тривиально.
А вы изучали вообще как устроены современные опенсорсные .NET обфускаторы?
public ActionResult Index(string link, string sublink, string filter = null)
{
// ...
return View();
}