2015-09-28 6 views
0

Предположат, я бы следующее:NHibernate ICriteria Ограничения найти свойство в коллекции, которые соответствуют значению

public class MyClass 
{ 
    public List<Widget> WidgetList { get; set; } 
} 

public class Widget 
{ 
    public string Foo { get; set; } 
    public string Bar { get; set; } 
} 

Я хочу запросить это, используя API NHibernate ICriteria найти весь MyClass, которые содержат виджет, где любой бар определенное значение. Я могу использовать Restrictions.In, чтобы найти свойство, которое находится в списке значений, но я не могу понять, как это сделать, и выяснить, содержит ли свойство коллекции что-то, соответствующее значению.

Я пытаюсь добиться чего-то вроде:

criteria = criteria.Add(Restrictions.Eq("WidgetList.Bar", myValue)); 

(где выше, очевидно, неверно)

Как я могу это сделать?

ответ

1

Я достиг того, что я хотел, создав псевдоним:

criteria.CreateAlias("WidgetList", "widgets", JoinType.LeftOuterJoin); 
criteria = criteria.Add(Restrictions.Eq("widgets.Bar", myValue));