让我解释一下我的情况。我有一个 HSPartList 表,其中包含 partName、描述、issueNo 等。进行搜索时,我有一个标准应该列出具有最新 issueNo 的所有部件。 IE。如果表格数据如下:
|PartName| PartDesc| IssueNo|
TestPart1 TestPart1 1
TestPart1 TestPart1 2
TestPart2 TestPart2 1
TestPart2 TestPart2 2
在这个例子中,当我搜索最新一期时,它应该只返回
|PartName| PartDesc| IssueNo|
TestPart1 TestPart1 2
TestPart2 TestPart2 2
我对此有 sql 查询。我需要将其转换为 nHibernate 查询。
SQL 查询是:
select * from HS_PartList HS where HS.IsLive = 1 and HS.PartName Like '%test%' 和 IssueNo=(select max(issueNo) from HS_PartList where HS_PartList.PartName=HS.PartName)
NHibernate 版本是 2.1.2.4000
最佳答案
var subquery = DetachedCriteria.For<Part>()
.Add(Restrictions.EqProperty("Name", "part.Name")) <-- part is the alias of the main query
.SetProjection(Projections.Max("IssueNo"));
var results = session.CreateCriteria<Part>("part")
.Add(Restrictions.Eq("IsLive", true))
.Add(Restrictions.Like("Name", teststring, MatchMode.Anywhere))
.Add(Subqueries.Eq("IssueNo", subquery))
.List();
关于c# - 用于 Sql 查询的 NHibernate 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8426552/