2010-11-10 4 views
0

Je suis assez nouveau pour NHibernate et je suis en train de modifier un critère qui prend actuellement un seul entier, en utilisant quelque chose comme (simplifié):NHibernate ICritery ajouter IEnumerable <int>?

int attributeId = 5; 
Attribute attributeAlias = null; 

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

Mais je veux changer pour permettre le passage dans un liste d'attributs, similaire à ceci.

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

Je n'ai pas encore réussi à comprendre comment mettre à jour les critères pour permettre une liste. Quelqu'un at-il des références à faire cela?

Répondre

4
int[] attributeIds = { 5, 6, 7, 8 }; 

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

Mise à jour: D'après ce Zenox a également contribué:

ICriteria criteria = Session.CreateCriteria(); 
criteria.Add(Restrictions.In (LambdaProjection.Property (() => attributeAlias.Id), attributeIds .ToArray ())); 
criteria.List(); 
+0

Merci, Je viens aussi trouvé le: « Restrictions.In (LambdaProjection.Property (() => attributeAlias.Id), attributeIds .ToArray()) 'qui fonctionne également. – Kyle

Questions connexes