Да, это будет работать.
То, что вы говорите компилятору, - это то, что вы собираетесь передать функцию, которая работает с User
объектом и возвращает bool
- как выглядит функция, полностью зависит от вас. Вы можете получить довольно сложные вложенные объекты, используя ors (||
) и ands (&&
), но если вам становится слишком трудно увидеть, что делает предикат, вам, вероятно, следует рассмотреть возможность рефакторинга.
Но в основном любая лямбда, которая принимает, например, u
в качестве User
объекта и превращает его в выражение, возвращающее bool
, будет работать.