看起来@HasAccess 是您的代码传入的参数,而不是由数据库确定的值。如果是这样,那么做您想做的最简单的方法是根据您将在查询中传递的值修改代码中的条件,例如:
var projections = Projections.ProjectionList()
.Add(Projections.Id())
.Add(Projections.Property("MsgNumber"))
.Add(hasAccess ? Projections.Property("Title") : Projections.Constant("*********"));
var criteria = session.CreateCriteria<Message>()
.Add(... your restrictions ...)
.SetProjection(projections)
.List<object[]>();
但是,如果 @HasAccess 是由您的数据库以某种方式确定的,那么您可以使用:
Projections.Conditional(Restrictions.Eq("HasAccess", 1),
Projections.Property("Title"),
Projections.Constant("*********"))
假设您可以通过某种方式将 HasAccess 纳入您的标准