2008-09-29 14 views
4

En utilisant NHibernate ICriteria et en ajoutant .AddOrder ... Je veux trier par une propriété qui est parfois nulle avec tous ceux qui sont peuplés en haut. Est-ce que .AddOrder me permettra de faire ça? Sinon, y a-t-il une alternative?NHibernate ICriteria - Le tri autorise-t-il null?

Les options de tri pour IList laissent beaucoup à désirer.

+0

Dans .NET 3.5, il existe des méthodes d'extension pour IList qui mettent sur pied d'égalité avec Liste . Je pense que c'est un projet sur le codeplex ... regardez autour de vous. –

Répondre

3

Vous devez obtenir les valeurs non nulles en premier en utilisant cette méthode. Nous utilisons le tri de cette façon sur mon projet, et nous n'avons eu aucun problème avec les valeurs nulles ... ils sont listés à la fin.

5

Si vous utilisez quelque chose de similaire à:

IList cats = sess.CreateCriteria(typeof(Cat)) 
    .AddOrder(Order.Desc("PropertyName")) 
    .List(); 

Les objets avec NULLs pour la propriété donnée sera dernier dans la liste.

(Pris en partie de la NHibernate documentation.)

+1

Je me rends compte que ça fait longtemps mais ce lien ne fonctionne pas. http://nhforge.org/doc/nh/en/index.html#querycriteria devrait le faire. – JasonCoder

+0

Merci JasonCoder :) – wprl

+0

Que faire si vous trier par '.AddOrder (Order.Desc (" NullableProperty.GrandchildProperty "))'? Pouvez-vous toujours obtenir tous les objets parents, même avec 'null' pour' NullableProperty'? – Michael

Questions connexes