2012-05-08 14 views
0

私はカスタムメンバーシッププロバイダに取り組んでおり、nhibernate基準apiクエリを処理しています。 linqへのこれらのクエリの翻訳に問題があります。nhibernateクエリ基準apiをlinqクエリ

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

'&& 'を' &&'に変更しないと、論理ANDを実行します。http://msdn.microsoft.com/en-us/library/2a723cdk(v=vs.80).aspx – Rippo

+0

typo :)ありがとう。 – Grunf

答えて

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

それを図達成するために "のように" あなたの基準は言及注:ここでは、コード

基準APIコードは

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

アップデートはuncomplete LINQ

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用のものと同じものが含まれていますこれは、一致する電子メールの有効なWRTではないかもしれませんallthough

すなわち

LINQメソッド構文で
from user in session.Query<User>() 
where user.Email == emailToMatch && user.Name.Contains("Adam") 
select user; 
0

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

注:あなたが本当にクエリを実行する必要がある場合にのみ.ToList()を行います直ちに。