Прямо это выглядит так:
ICriteria query = Session
.CreateCriteria<Article>("a")
.CreateCriteria("a.Categories", "c")
.Add(Expression.Eq("c.ID", categoryId)
Существует также выражение IdEq, но вы не можете сказать, какой идентификатор (какого имени сущности / псевдонима), поэтому я не доверяю ему.
ICriteria query = Session
.CreateCriteria<Article>("a")
.CreateCriteria("a.Categories", "c")
.Add(Expression.IdEq(categoryId) // a.ID or c.ID?
Проблема с присоединениями к коллекциям. Вы получите столько результатов, сколько даст объединение статей и категорий, это может увеличить количество статей.
Используйте преобразователь результата или подзапросы. См этот пост .