我正在尝试统计有多少患者不使用与他们相关的设备。以下返回值 4。它需要返回值 1,因为有 1 名患者使用 4 台设备处于非活动状态。
return FluentSessionManager.GetSession()
.CreateCriteria<Patients>()
.CreateAlias("Locations", "l")
.CreateAlias("l.Branches", "b")
.CreateAlias("PatientsEquipment", "pe")
.Add(Expression.Eq("b.ID", branchID))
.Add(Expression.Eq("CurrentStatus", Enumerations.PatientStatus.Inactive))
.Add(Expression.IsNull("pe.PickupDate"))
.Add(Expression.Eq("pe.PickupRequestSent", false))
.Add(Expression.Eq("pe.MaintenanceRequestSent", false))
.SetResultTransformer(new DistinctRootEntityResultTransformer())
.SetProjection(Projections.Count("ID")).UniqueResult<int>();
如果我执行以下操作,我可以获得准确的计数:
ICriteria query = FluentSessionManager.GetSession()
.CreateCriteria<Patients>()
.CreateAlias("Locations", "l")
.CreateAlias("l.Branches", "b")
.CreateAlias("PatientsEquipment", "pe")
.Add(Expression.Eq("b.ID", branchID))
.Add(Expression.Eq("CurrentStatus", Enumerations.PatientStatus.Inactive))
.Add(Expression.IsNull("pe.PickupDate"))
.Add(Expression.Eq("pe.PickupRequestSent", false))
.Add(Expression.Eq("pe.MaintenanceRequestSent", false))
.SetResultTransformer(Transformers.DistinctRootEntity);
IList<Patients> patients = query.List<Patients>();
if (patients == null)
{
return 0;
}
return patients.Count();
有什么想法可以在不返回完整记录集然后对其进行计数的情况下获得准确的患者计数吗?
提前致谢。