2017-12-12 41 views
1

のリストを含むUserという名前のマップされたnhibernateオブジェクトモデルがあるとします。また、有効な登録のリストを含むC#配列もあります。Nhibernateオブジェクトモデル配列がC#配列と交差する場所の問い合わせ

有効な登録が含まれているユーザーのみにクエリを送信するにはどうすればよいですか。

私は次のことを試してみました:

Registration[] validRegistrations; // already populated 
session.Query<User>().Where(usr => usr.Registrations.Intersect(validRegistrations).Any()); 

私はこれをしようとすると、私は次のエラーを取得する:"The IntersectResultOperator result operator is not current supported"

+0

はユーザーであり、登録は双方向マッピングされていますか?ユーザーは無効な登録をしていますか? – Fran

答えて

1

最適ではありませんが、この作品のようなものではないでしょうか?あなたは(私はそれをより読みやすくなります考えている)この1のためにLINQクエリ構文への切り替えを気にしない場合は

var results = 
    session 
     .Query<User>() 
     .Where(usr => validRegistrations.Contains(usr.Registrations) 
     .ToList(); 
0

は、私はあなたが以下の探していると考えている:以下

var results = from user in session.Query<User>() 
       from registration in user.Registrations 
       where validRegistrations.Contains(registration) 
       select user; 
0

ソリューションはIntersectに相当します。

session.Query<User>().Where(usr => usr.Registrations.Any(reg => validRegistrations.Contains(reg)));