nhibernatelambdaqueryover

QueryOver with Select and OrderBy in NHibernate


I am wondering how do I order a group of results after a select with QueryOver. My query is the following:

CurrentSession.QueryOver<Book>()
    .Where(b => b.Author.Name = "SimpleName")
    .Select(Projections.Distinct(Projections.Property<Book>(b => b.Genre)))
    .OrderBy<Genre>(g => g.Name) // this extension does not exist! How do I order for a Genre?
    .List<Genre>()

How can I do?


Solution

  • Your query won't work to begin with. You first of all need to do a join, then you can do your order by and select projections.

    Author author = null;
    Genre genre = null;
    CurrentSession.QueryOver<Book>()
         .JoinAlias(b => b.Author, author)
         .JoinAlias(b => b.Genre, genre)
         .Where(() => author.Name == "SimpleName")
         .OrderBy(() => genre.Name)
         .Select(Projections.Distinct(Projections.Property<Book>(b => b.Genre)))
         .List<Genre>();