【发布时间】:2016-04-25 13:22:10
【问题描述】:
我想在 Nhibernate QueryOver 中做这个 SQL 查询:
SELECT id FROM tb_example
GROUP BY id, name
ORDER BY name
我尝试了什么:
1) 我在SelectList 中添加了一个.Select,试图覆盖SelectGroup 的选择,但没有成功
var query = session.QueryOver<Person>()
.SelectList(list => list
.Select(p => p.Id)
.SelectGroup(p => p.Id)
.SelectGroup(p => p.Name));
query = query.OrderBy(p => p.Name).Asc;
使用query生成的SQL:
SELECT id, id, name FROM tb_example
GROUP BY id, name
ORDER BY name
2) 在另一个查询的结果中使用查询。像这样:
SELECT id
FROM
(SELECT id, name FROM tb_example
GROUP BY id, name
ORDER BY name)
但我不知道如何从另一个查询创建结果查询。
var groupByQuery = session.QueryOver<Person>()
.SelectList(list => list
.SelectGroup(p => p.Id)
.SelectGroup(p => p.Name));
var query = session.QueryOver<?????>();
我该怎么做?谢谢!
【问题讨论】:
-
关于#1,不幸的是,QueryOver 你必须
SELECT所有分组列。据我所知,#2 是完全不可能的。 QueryOver 只能从映射表中选择(而不是像您的示例所示的任意表表达式)。 -
另见此问答,可能重复:stackoverflow.com/q/30913037/497356
标签: c# nhibernate queryover