Я не думаю есть встроенный трансформатор, который может сделать это (вы можете написать свой собственный), но это может достаточно просто, чтобы записать немного LINQ после получения результатов запроса, достаточно хорошо.
Это зависит от того, как вы хотите, чтобы ваш словарь выглядел, но вот пример, который может помочь. Скажем, вы хотели получить словарь, где ключ true
или false
, представляющий модераторы и немодераторы, а значение - List<string>
с именами модераторов. В этом случае можно было бы написать:
IDictionary<bool, List<string>> moderatorDictionary = session.QueryOver<Customer>()
.Select(
x => x.Name,
x => x.Moderator
)
.List<object[]>()
.GroupBy(x => (bool)x[1], x => (string)x[0])
.ToDictionary(grp => grp.Key, grp => grp.ToList());
Использование List<object[]>
обычно не велика для ремонтопригодности, но для двух свойств, как это это, вероятно, хорошо. Если вы работаете с большим количеством свойств, лучше всего создать класс и использовать AliasToBean
, чтобы преобразовать каждую строку в экземпляр этого класса.
Каков ключ в словаре? 'Имя' или' Модератор'? –