Как я могу поместить List в WHERE для запроса Linq-to-NHiberbnate, если он содержит нули? - PullRequest
0 голосов
/ 26 марта 2011

Я использую nHibernate и пытаюсь сделать запрос.

Пример:

У меня есть List<Entity> - это будут объекты для фильтрации

У меня есть List<int?> - это будет фильтр со значениями некоторого поля Entity.SomeId

этот список будет содержать значения: 0,1,2,3, нуль

Я хочу сделать запрос следующим образом:

List<int?> filters;//1,2,3,null
List<Entity> entities; // some entities
Entities.Where(entity => filters.Contains(Enentity.SomeId)).ToList();

nHibernate делает запрос (вид):

select * from entities where entity.someId in (....);

результат: вернул все отфильтрованные записи, которые мне нужны, кроме сущностей, где entity.SomeId == null

Что с ним не так? есть ли обходной путь для таких вещей?

1 Ответ

4 голосов
/ 26 марта 2011

Я бы использовал составное условие и использовал бы список int вместо int?.

List<int> filters;//1,2,3
List<Entity> entities; // some entities
Entities.Where(entity => entity.SomeId == null
                           || filters.Contains(Enentity.SomeId))
        .ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...