2011-05-17 41 views
4

我想知道我怎么后QueryOver一个SELECT命令一组结果。我的查询如下:QueryOver有选择和排序依据NHibernate的

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>() 

我该怎么办?

谢谢!

回答

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>(); 
+0

谢谢你,非常简洁明快。 – StockBreak 2011-05-17 18:09:23

+2

顺便说一句我使用QueryOver代替LINQ NHibernate的,因为某些查询(如此一)经常得到无能'NotSupportedException' :( – StockBreak 2011-05-17 19:25:41

+3

我需要像'.OrderBy(X => x.FieldIndex).Asc'基本上递增/递减需要指定 – basarat 2013-07-22 04:38:12