Интересно, вы подходите к этому с неправильной стороны? NHibernate используется для сопоставления объектов вашей базы данных с объектами вашего домена. Вы можете создать какой-нибудь пользовательский файл карты, использующий формулу для получения различных символов, но я думаю, что это один из тех случаев, когда достаточно простого запроса SQL.
Альтернативой может быть загрузка всех компаний в память и использование linq для получения имен.
companies.Select(company => company.Name.Substring(0, 1));
Иногда я бываю ослеплен, когда использую фальшивые рамки и изо всех сил пытаюсь издеваться над конкретной сущностью, только когда я отступаю назад, я понимаю, что будет проще и чище издеваться над моей собственной сущностью.