Как обрабатывать пустой набор результатов NHibernate LINQ? - PullRequest
4 голосов
/ 22 октября 2009

Я хочу получить список ролей для вошедшего в систему пользователя.

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

ISession session = NHibernateHelper.GetCurrentSession();
            var data = from s in session.Linq<ApplicationUserRole>()
                    where s.AppUser.ID = 1
                    select s.Role.Name;

             List<Role> list = data.ToList();

AppUser: пользовательский объект Роль: Роль сущности. Поскольку в базе данных нет данных для идентификатора пользователя 1, ничего не возвращается.

Возвращаемым типом данных является NHibernate.Linq.Query, и оно не равно нулю.

Выдает следующее сообщение об ошибке при попытке преобразовать его в ToList ();

"Индекс был вне диапазона. Должно быть неотрицательный и меньше размера Коллекция. Имя параметра: индекс "

Как мне обращаться с пустыми наборами результатов?

1 Ответ

1 голос
/ 09 февраля 2010

Это должно работать ...

List<Role> list = data.Any() ? data.ToList() : new List<Role>();
...