在NHibernate中使用Select和OrderBy的QueryOver

Sto*_*eak 4 nhibernate lambda queryover

我想知道在使用QueryOver选择后如何订购一组结果.我的查询如下:

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>()
Run Code Online (Sandbox Code Playgroud)

我能怎么做?

谢谢!

Vad*_*dim 7

您的查询无法开始使用.您首先需要进行加入,然后您可以按顺序进行选择并选择投影.

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>();
Run Code Online (Sandbox Code Playgroud)

  • 我需要类似`.OrderBy(x => x.FieldIndex).Asc`的东西基本上需要指定asc/desc (3认同)
  • 顺便说一句我使用QueryOver而不是LINQ到NHibernate,因为一些查询(例如这一个)经常给出一个无能的`NotSupportedException` :( (2认同)