C# 对象模型数组与C数组相交的Nhibernate查询

C# 对象模型数组与C数组相交的Nhibernate查询,c#,nhibernate,C#,Nhibernate,假设我们有一个名为User的映射nhibernate对象模型,其中包含注册列表。我们还有一个包含有效注册列表的C数组 如何仅查询包含有效注册的用户 我尝试了以下方法: Registration[] validRegistrations; // already populated session.Query<User>().Where(usr => usr.Registrations.Intersect(validRegistrations).Any()); var resul

假设我们有一个名为User的映射nhibernate对象模型,其中包含注册列表。我们还有一个包含有效注册列表的C数组

如何仅查询包含有效注册的用户

我尝试了以下方法:

Registration[] validRegistrations; // already populated
session.Query<User>().Where(usr => usr.Registrations.Intersect(validRegistrations).Any());
var results = from user in session.Query<User>()
              from registration in user.Registrations
              where validRegistrations.Contains(registration)
              select user;

当我尝试此操作时,会出现以下错误:IntersectResultOperator结果运算符当前不受支持

虽然不是最佳的,但类似的操作不起作用吗

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

如果您不介意切换到LINQ查询语法,我认为这会使它更具可读性,我相信您正在寻找以下内容:

Registration[] validRegistrations; // already populated
session.Query<User>().Where(usr => usr.Registrations.Intersect(validRegistrations).Any());
var results = from user in session.Query<User>()
              from registration in user.Registrations
              where validRegistrations.Contains(registration)
              select user;

以下解决方案相当于相交:


用户和注册是否双向映射?用户是否可以拥有无效的注册?