Я не знаю ActionLink, но кажется, что в этом фрагменте кода:
new { @title = item.ToolTip, item.Selected == 1 ? "class=selected" : "" }
вы объявляете анонимный тип, причем первое поле называется "@title", но ... второе?!? Здесь мы видим выражение с троичным оператором, но его возвращаемое значение ни к чему не привязано.
Вы должны добавить идентификатор и оператор присваивания перед "item.Selected":
new { @title = item.ToolTip, class = item.Selected == 1 ? "selected" : "" }
Если значение class = "" недопустимо, вы можете попытаться поместить весь объект в троичный оператор, например так:
item.Selected == 1 ? new { @title = ... } : new { @title = ..., class = "selected" }
Но, вероятно, это не сработает: троичный оператор не сможет определить тип результата (два анонимных типа имеют разную сигнатуру).
Единственный другой способ - сначала создать экземпляр правого анонимного объекта, используя тип «var», а затем передать его методу.
В любом случае здесь нет лямбда-выражений. Вы должны пометить свой ответ «анонимными типами» вместо «лямбда».