2012-06-12 2 views

Répondre

11

Essayez cette

SessionInstance.Query<Request>().Max(x => (int?)x.Code); 
+0

Pourquoi le casting fait-il ce travail? Est-ce que 'x.Code' était autre chose que' int? '? (Je veux juste apprendre, ne pas promouvoir ma propre réponse). –

+0

@GertArnold Je ne sais pas, ça marche juste :) Mais je pense que c'est quelque chose lié au fournisseur Nhibernate linq. –

+1

Ok, merci pour votre réponse. Peut-être que quelqu'un peut faire la lumière sur cela. –

1

Je pense que cela devrait fonctionner avec LINQ to NHibernate:

var q = SessionInstance.Query<Request>().Select(e => e.Code) 
    .DefaultIfEmpty().Max(); 

ou DefaultIfEmpty(<some value>) peut-être.

+0

Votre solution pour de nombreux enregistrements dans la base de données pour la performance ne convient pas. – Ehsan

+0

Pourquoi pas? DefaultIfEmpty ne va pas chercher plus d'enregistrements, il ajoutera seulement une valeur si la séquence est vide. –

+3

DefaultIfEmpty pour NHibernate linq provider n'est pas implémenté et déclenche une exception à partir de NHibernate 3.3.1.4000 version –

Questions connexes