Nhibernate 需要Linq到标准API的翻译帮助

Nhibernate 需要Linq到标准API的翻译帮助,nhibernate,Nhibernate,我不确定如何将分页添加到该页面: Session.Linq<Article>() .Where(art => art.Tags.Any(t => t.Name == tag)).ToList(). Session.Linq() .Where(art=>art.Tags.Any(t=>t.Name==tag)).ToList()。 所以我决定使用criteriaapi var rowCount = Session.CreateCriteria(typeof(Arti

我不确定如何将分页添加到该页面:

Session.Linq<Article>()
  .Where(art => art.Tags.Any(t => t.Name == tag)).ToList().
Session.Linq()
.Where(art=>art.Tags.Any(t=>t.Name==tag)).ToList()。
所以我决定使用criteriaapi

var rowCount = Session.CreateCriteria(typeof(Article))
  .SetProjection(Projections.RowCount()).FutureValue<Int32>();

var res = Session.CreateCriteria(typeof(Article))
  .Add(/* any help with this? :) */)
  .SetFirstResult(page * pageSize)
  .SetMaxResults(pageSize)    
  .AddOrder(new Order("DatePublish", true))
  .Future<Article>();

totalCount = rowCount.Value;
var rowCount=Session.CreateCriteria(typeof(Article))
.SetProjection(Projections.RowCount()).FutureValue();
var res=Session.CreateCriteria(typeof(Article))
.Add(/*是否有此方面的帮助?:)*/)
.SetFirstResult(页面*页面大小)
.SetMaxResults(页面大小)
.AddOrder(新订单(“DatePublish”,true))
.Future();
totalCount=rowCount.Value;

感谢您的帮助。

在执行分页的链接中,您可以使用命令
Skip
Take

您的场景:

Session.Linq<Article>()
  .Where(art => art.Tags.Any(t => t.Name == tag))
  .Skip(2*20).Take(20)
  .ToList();

int totalCount = Session.Linq<Article>()
                     .Where(art => art.Tags.Any(t => t.Name == tag))
                     .Count();
Session.Linq()
.Where(art=>art.Tags.Any(t=>t.Name==tag))
.跳过(2*20)。拿(20)
.ToList();
int totalCount=Session.Linq()
.Where(art=>art.Tags.Any(t=>t.Name==tag))
.Count();

是的,但是如何检索总计数?在同一个数据库请求中如何做到这一点?我不想在内存中检索上千篇文章,我还没有做过很多这样的事情,但我很确定在大多数情况下,你只需要调用count方法。根据您使用的LINQ提供程序,可能有更好的方法在执行查询后获取计数。NHibernate LINQ提供程序可能有更好的方法来实现这一点,我只是想我会提供最基本的LINQ。我很确定这将导致2次数据库命中。如果不会的话,我会很惊讶。将尝试发布探查器日志。:)是的,我很确定这会在数据库中出现两次。。。2个选择(我尝试将第一个表达式结果保留为IQueryable,直到第二个选择返回count)。目前——我不太在乎(面对最后期限),但这不是问题的正确答案(事实上——我自己也知道)