NHibernate Linq - 如何选择WHERE IN

mik*_*kel 3 c# linq nhibernate

鉴于以下域模型:

Dog { Id, Name, Color }

Color { Id, Name }
Run Code Online (Sandbox Code Playgroud)

我如何获得有NHibernate.Linq的狗的颜色.在SQL中我会

SELECT Color.Id, Color.Name FROM Color 
    WHERE Id IN 
    (SELECT DISTINCT Dog.ColorId FROM Dog);
Run Code Online (Sandbox Code Playgroud)

Luk*_*oid 5

这可能有效:

Colors.Where(c => Dogs.Any(d => d.Color.Equals(c)))
Run Code Online (Sandbox Code Playgroud)

但是,如果您纯粹根据颜色标识符进行匹配,请尝试以下方法:

Colors.Where(c => Dogs.Any(d => d.Color.Id == c.Id))
Run Code Online (Sandbox Code Playgroud)

这些将为您提供狗使用的所有颜色.