Как получить четкий список первых букв с NHibernate - PullRequest
2 голосов
/ 06 июля 2010

Я попал в середину проекта, который использует MVC2 и NHibernate. Я не работал с NHibernate раньше, поэтому, как бы ни казался этот вопрос, я немного не в себе.

Мне нужно создать каталог для ряда групп компаний. Первая задача - получить отдельный список первых букв для каждой компании.

Так что, если у нас есть

ACompany1
ACompnay2
BCompany1
DCompany1
DCompany2
ECompany1

Мне нужно получить список вроде

A B D E (примечание, нет 'C')

Может кто-нибудь дать мне план того, что мне нужно делать? Спасибо

Ответы [ 3 ]

3 голосов
/ 06 июля 2010

Предполагая, что имя класса Company, а свойство Name ...

var groups = session.CreateQuery(
                    "select distinct substring(Name, 1, 1) from Company")
                    .List<string>()
1 голос
/ 06 июля 2010

Интересно, вы подходите к этому с неправильной стороны? NHibernate используется для сопоставления объектов вашей базы данных с объектами вашего домена. Вы можете создать какой-нибудь пользовательский файл карты, использующий формулу для получения различных символов, но я думаю, что это один из тех случаев, когда достаточно простого запроса SQL.

Альтернативой может быть загрузка всех компаний в память и использование linq для получения имен.

companies.Select(company => company.Name.Substring(0, 1));

Иногда я бываю ослеплен, когда использую фальшивые рамки и изо всех сил пытаюсь издеваться над конкретной сущностью, только когда я отступаю назад, я понимаю, что будет проще и чище издеваться над моей собственной сущностью.

0 голосов
/ 06 июля 2010

Сначала вам нужно решить, как вы будете это делать с SQL. Возможно, вы будете использовать какую-то функцию SUBSTRING . После того, как вы ее решите, вы можете написать аналогичный HQL-запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...