IN运算符在NHibernate上使用Linq的地方

Fel*_*ani 4 c# linq nhibernate queryover

我有一个使用NHibernate使用Session.Query<T>方法的linq查询,我在这个查询中获取一些复杂的属性和集合属性.我想知道,如何IN从运算符中添加一个条件int[]?看看我的代码:

public IEnumerable<Product> GetProducts(int[] idCategories) 
{
    // how to add IN condition here or a subquery 
    var query = Session.Query<Product>()
                   .Where(?????)
                   .Fetch(x=>x.Category)
                   .FetchMany(x=>x.Status).ThenFetch(x=>x.Item);

    return query.ToList();
}
Run Code Online (Sandbox Code Playgroud)

我有另一个方法做一个查询来获得这个int[],我想在这里应用它,或者如果有任何方法在IN运算符上添加这个子查询,我真的很感激!

OBS:如果必要,我可以转换int[]List<int>.

编辑

int[]通过以下查询得到了这个:

return session.Query<Category>.Where(...).Select(x => x.Id).ToArray();
Run Code Online (Sandbox Code Playgroud)

我的第二个问题是,如何将此查询作为子查询添加到按类别筛选?

谢谢!

Fis*_*rdo 7

你真的不需要IN操作员.你可以这样做:

.Where(x => idCategories.Contains(x.Category))
Run Code Online (Sandbox Code Playgroud)

注意:Contains是一种扩展方法.您需要确保有一个using语句System.Linq,但您可能已经拥有它.