2

我开始使用 LINQ 和 NHibernate,你能帮我了解一下吗:

我需要将一个 lambda 语句传递给 nhibernate .QueryOver(),它是基于我模型上的一个属性的条件:

if (model.PropertyA != String.Empty) {
    var searchResults = nhibSession.QueryOver<type>(x => 
                                             x.propA == model.PropertyA)
                                   .List();
}

有没有更好的方法来使用 C# 表达式而不是 lambda 语句来做到这一点?如何使用 model.PropertyA 创建表达式?我使用 Expression.Property() 还是 Expression.Field()?

谢谢

4

1 回答 1

0

如何使用 model.PropertyA 创建表达式?

我怀疑你应该使用Expression.Constant- 即使它不像正常意义上的常量“感觉”,但对于该表达式来说它是常量,因为模型不是表达式输入的一部分。

Expression foo = Expression.Constant(model.PropertyA);
于 2012-10-04T15:23:59.637 回答