NHibernate вернуть словарь - PullRequest
2 голосов
/ 11 января 2011

Можно ли вернуть словарь <int, string> из запроса nhibernate, такого как:

CreateQuery("select CustomerId, FullName from Customer")  

Я пробовал несколько примеров из этого форума, используя метод .net ToDictionary, но не могузаставить их работать.

Ответы [ 2 ]

5 голосов
/ 11 января 2011

Вы должны сделать следующее в вашем списке или перечислимом, и вы должны получить диктонарный

.ToDictionary(x => x.CustomerId, x => x.FullName);
2 голосов
/ 11 января 2011

Я не знаю, как это сделать напрямую в NH.ISession не предоставляет, ICriteria также.IResultTransformer просто преобразует простые объекты и списки объектов в списки.

Конечно, есть обходной путь:

CreateQuery<Customer>("select CustomerId, FullName from Customer")
.ToList<Customer>() // since now working on real objects
.ToDictionary(x => x.CustomerId, x => x.FullName)

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

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