System.Linq.Dynamic 和Nhibernate

    var session =                
                NHibernateSessionManager.Instance.GetSession();
            var exp = System.Linq.Dynamic.DynamicExpression.ParseLambda<HrStaff,bool>("StaffNo ==@0","0006");
            
            var staffList = session.QueryOver<HrStaff>().Where(exp).RootCriteria.Add(Restrictions.Eq("StaffName","n")).List();

公司里Nihibernate代码用的ICriteria 方式,但是要一些过滤条件希望用表达式实现,找了一下System.Linq.Dynamic ,不过文档只有动态代理Where,OrderBy,Select 

,当然Nhibernate.linq有Linq方式,但是Linq方式和ICriteria 方式不能同时用,QueryOver到是可以和ICriteria 方式通用,找了一下源代码有方式DynamicExpression.ParseLambda,可以解决问题。

ps:nuget.org上System.Linq.Dynamic 没有签名,codeplex上的代码发现只有一个文件,就把这文件合并在自己dll里

原文地址:https://www.cnblogs.com/peteryu007/p/5382771.html