我已经进入了一个使用MVC2&的项目中间。 NHibernate的。我之前没有使用NHibernate,所以就像这个问题一样简单,我有点超出我的深度。
我必须为许多公司组创建一个目录。第一项任务是获得每个公司的第一个字母的明确列表。
所以,如果我们有
ACompany1
ACompnay2
BCompany1
DCompany1
DCompany2
ECompany1
我需要获得一个像
这样的列表A B D E(注意,没有'C')
有人可以请我概述一下我需要做什么吗?感谢
答案 0 :(得分:3)
假设班级名称为Company
且属性为Name
...
var groups = session.CreateQuery(
"select distinct substring(Name, 1, 1) from Company")
.List<string>()
答案 1 :(得分:1)
我想知道你是否从错误的方向接近这个问题。 NHibernate用于将数据库对象映射到域对象。您可以创建一些使用公式来获取不同字符的自定义映射文件,但我认为这是一个简单的SQL查询就足够了的情况之一。
替代方案是将所有公司加载到内存中并使用linq获取名称。
companies.Select(company => company.Name.Substring(0, 1));
在使用模拟框架并且努力模拟某个特定实体时,我有时会蒙上眼睛,直到我退后一步才意识到模仿我自己的实体会更容易和更清晰。
答案 2 :(得分:0)
首先,您需要决定如何使用sql。可能你会使用某种SUBSTRING函数。解决之后,您可以编写类似的HQL查询。