nhibernate查询条件api到linq查询

时间:2012-05-08 09:38:50

标签: linq nhibernate

我正在开发自定义成员资格提供程序,我正在使用nhibernate条件api查询。 我有问题将这些查询翻译成linq。这是代码

标准api代码

 users = session.CreateCriteria(typeof(Entities.User))
              .Add(NHibernate.Criterion.Restrictions.Like("Email", emailToMatch))
              .Add(NHibernate.Criterion.Restrictions.Eq("ApplicationName", this.ApplicationName))
               .List<Entities.User>();

uncomplete linq

users = session.Query<Entities.User>()
            .Where(x => x.EMail == emailToMatch) 
            //missing ApplicationName equal to this.ApplicationName
            .ToList();

更新:图吧

  users = (from User u in session.Query<Entities.User>()
              where u.Email == emailToMatch && "ApplicationName" == this.ApplicationName
              select u).ToList();

2 个答案:

答案 0 :(得分:1)

from user in session.Query<User>()
where user.Email == emailToMatch && user.ApplicationName == this.ApplicationName
select user;

请注意您的标准提到“喜欢”在linq中实现相同的内容包含尽管这可能无效w.r.t电子邮件匹配

from user in session.Query<User>()
where user.Email == emailToMatch && user.Name.Contains("Adam") 
select user;

答案 1 :(得分:0)

使用LINQ方法语法:

users = session.Query<Entities.User>()
             .Where(user => user.Email == emailToMatch && user.ApplicationName == this.ApplicationName)

注意:如果您确实需要立即运行查询,请仅执行.ToList()。