【问题标题】:query from nhibernate Criteria api to linq从 nhibernate Criteria api 查询到 linq
【发布时间】:2012-05-25 12:39:30
【问题描述】:

我想将以下查询从 nhibernate 条件查询 api 转换为 linq。

 var userquery = session.CreateCriteria(typeof(User))
          .SetFirstResult(pageIndex * pageSize)
          .SetMaxResults(pageSize);

 var totalcountQuery = CriteriaTransformer.Clone(userquery)
           .SetProjection(Projections.RowCountInt64());

谢谢

更新

IEnumerable<User> dbUsers = userquery.Future<User>();
IFutureValue<long> count = totalcountQuery.FutureValue<long>();

【问题讨论】:

    标签: c# linq nhibernate nhibernate-criteria


    【解决方案1】:

    直接(ish)翻译是:

    var userQuery = session.Query<User>().Skip(pageIndex * pageSize).Take(pageSize);
    
    var totalCount = userQuery.LongCount();
    

    但是我不确定您为什么要在 Skip & Take 之后进行计数,我想是这样的:

    var totalCount = session.Query<User>().LongCount(); 
    

    会更接近你想要的

    http://blogs.planetcloud.co.uk/mygreatdiscovery/post/Executing-future-queries-with-NHibernate-Linq.aspx

    对于 Linq 上的期货,您可以这样做:

    var users = userQuery.ToFuture();    
    var totalCount = userQuery.LongCount(); // users will be a future, count won't be but if it's only 2 queries then this will execute them both
    

    【讨论】:

    • 我需要实现自定义会员提供程序,不过谢谢
    • 问题更新了,你能翻译一下这个在linq中添加的两行吗,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多