我有两节课:
class Foo
{
string Name
}
class Bar
{
IList<Foo> Foos;
}
以及以下表达式树:
var fooFilters = (Expression<Func<Foo, bool>>)(foo => foo.Name == "baz");
在 NHibernate 中,我可以写:
Session.Query<Bar>().Where(bar => bar.Foos.Any(foo => foo.Name == "baz"));
它有效。
虽然,我不能写:
Session.Query<Bar>().Where(bar => bar.Foos.Any(fooFilters));
这是一个编译错误,因为IEnumerable.Any
不期望Expression<TDelegate>
.
有没有可能实现?我是否必须重写 fooFilters 表达式,还是有其他方法?
我对表达式树操作知之甚少,谁能指出我正确的方向?
我正在使用框架 3.5,这很重要。