NHibernate ICritery добавить IEnumerable <int>? - PullRequest
0 голосов
/ 10 ноября 2010

Я довольно новичок в NHibernate и пытаюсь изменить критерий, который в настоящее время принимает одно целое число, используя что-то вроде (упрощенное):

int attributeId = 5;
Attribute attributeAlias = null;

var criteria = DetachedCriteria<Asset>.Create(() => attributeAlias)
.Add(() => attributeAlias.Id == attributeId )

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

IEnumerable<int> attributeIds = new List<int> ( ) { 5, 6, 7, 8 };

Я пока не смог выяснить, как обновить критерии, чтобы разрешить список.У кого-нибудь есть ссылки на это?

1 Ответ

4 голосов
/ 10 ноября 2010
int[] attributeIds = { 5, 6, 7, 8 };

ICriteria criteria = Session.CreateCriteria();
criteria.Add(Expression.In("Id", attributeIds)); //this is the important part
criteria.List();

Обновление: Из того, что сделал Zenox:

ICriteria criteria = Session.CreateCriteria();
criteria.Add(Restrictions.In ( LambdaProjection.Property ( ( ) => attributeAlias.Id ), attributeIds .ToArray ( ) ));
criteria.List();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...