0

私はカスタムメンバーシッププロバイダーに取り組んでおり、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>();

不完全な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();
4

2 に答える 2

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

linqで同じことを達成するための「いいね」が基準に記載されていることに注意してください。ただし、これは電子メールの照合では有効ではない可能性があります。

すなわち

from user in session.Query<User>()
where user.Email == emailToMatch && user.Name.Contains("Adam") 
select user;
于 2012-05-08T09:54:08.323 に答える
0

LINQメソッド構文の場合:

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

注:クエリをすぐに実行する必要がある場合にのみ、.ToList()を実行してください。

于 2012-05-08T10:12:35.567 に答える