Я думаю, что это близко к тому, что вы после.Вероятно, существует более элегантный способ создания нескольких критериев "или".Я делаю предположение, что ваши классы выше действительно имеют идентификаторы и ссылаются друг на друга, так как они не включены в ваши базовые классы выше.
ICriteria criteria = Session.CreateCriteria(typeof(a));
criteria.CreateAlias("a.Id", "b", JoinType.InnerJoin);
criteria.CreateAlias("b.Id", "c", JoinType.InnerJoin);
criteria.Add(
Expression.Or(
Expression.Or(
Expression.Like("c.LastName", "Ted"),
Expression.Like("c.LastName", "Test")),
Expression.Or(
Expression.Like("b.Name", "Ted"),
Expression.Like("a.Name", "Test"))
)
);
criteria.List();
Я предполагаю, что ваша модель класса должна быть следующейна основании вашего заявления sql
public class A
{
public string name {get; set;}
public B Id {get; set;}
}
public class B
{
public C Id {get; set;}
public string name {get; set;}
}
public class C
{
public string firstname {get; set;}
public string lastname {get; set;}
}