使用 SQL 函数值从 SQL 到 NHibernate 查询

标签 sql c nhibernate left-join queryover

我正在尝试进行查询,返回名为 StatusTaxatieAantal 的对象列表。

    public class StatusTaxatieAantal
{
    public long Aantal { get; set; }
    public long StatusTaxatie { get; set; }
}

我已经有返回列表的 SQL 查询,但现在我需要将其转换为 NHibernate queryover。我对这种编写查询的方式没有经验。这是我创建的 SQL 查询和结果。

SELECT SUB.count,x.StatTax
FROM (VALUES (30),(28),(22),(20),(18),(16),(14),(12),(11),(10),(0)) x(StatTax)
left join
(
SELECT COUNT(*) AS count, wb.StatTax
FROM dbo.Wbp wb 
INNER JOIN dbo.tax ta ON wb.WozNum = ta.WozNum AND wb.WrdPeildat = ta.WrdPeildat 
INNER JOIN dbo.Woz wo ON wo.WozNum = ta.WozNum  
WHERE wb.wrdpeildat = 20170101 AND wb.IsLaatste = 1  AND (wo.Soc < '2000' or wo.Soc = '5100') 
GROUP BY wb.StatTax
)
SUB ON x.StatTax = SUB.StatTax 

https://imgur.com/Eq2IcTX
count 将是 Aantal,StatTax 将是 StatusTaxatie。如果有人知道如何将其转换为 queryover 或有一个解释它的网站,我想知道。

最佳答案

IList<StatusTaxatieAantal> nietWoningList =
            Session.QueryOver(() => wbp)
                .JoinAlias(() => wbp.Tax, () => tax)
                .JoinAlias(() => tax.Woz, () => woz)
                .JoinAlias(() => woz.Soc, () => soc)
                .Where(() => wbp.Waardepeildatum == waardePeilDatum)
                .And(() => wbp.IsLaatste)
                .And(
                    Restrictions.And(
                        Restrictions.Gt(Projections.Property(() => soc.Id), "2000"),
                       !Restrictions.Eq(Projections.Property(() => soc.Id), "5100"))
                )
                .SelectList(list => list
                    .SelectCount(() => wbp.WozNummer).WithAlias(() => result.Aantal)
                    .SelectGroup(() => wbp.StatusTaxatie).WithAlias(() => result.StatusTaxatie)
                )
                .OrderBy(() => wbp.StatusTaxatie).Desc
                .TransformUsing(Transformers.AliasToBean<StatusTaxatieAantal>())
                .List<StatusTaxatieAantal>();

此后,我制作一个包含所有状态的列表,并检查返回列表是否有状态。

关于使用 SQL 函数值从 SQL 到 NHibernate 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48984095/

相关文章:

两列的MySQL区别

sql - 在一个事务 "see"中所做的更改是否相互?

NHibernate 3.2 多对多代码映射

c# - 使用 FluentNhibernate 基于列的 Mysql 排名

c# - 网站引用了一个使用 NHibernate 与数据库对话的控制台应用程序

mysql - 在 MySQL 查询中使用带有 Where 子句的 Cases

具有最高优先级的 SQLrange 查询

c - read() 的奇怪行为

c - 使用结构写入文件

在 C 中对指向外部变量的指针调用 free