Хотя NHibernate Criteria лучше с точки зрения производительности, NHibernate Linq обеспечивает проверку времени компиляции. Я редко видел какие-либо проекты, имеющие проблемы с использованием любого из 2, так как прирост производительности незначителен.
В моем случае я обычно использую Linq, за исключением случаев, когда я не могу выразить их, а затем я должен использовать ICriteria. Преимущество проверки времени компиляции перевешивает незначительный прирост производительности.