如何在QueryOver中将lambda表达式与alias属性进行比较?

时间:2011-07-26 17:55:08

标签: c# .net nhibernate lambda queryover

我正在尝试编写共享的查询布局,这些查询共享相似的限制和结果集,但报告中的得分属性除外。我作为lambda表达式传递得分属性,我可以在选择中使用它,但Where()给了我悲伤。

关于make Where()的任何想法都适用于表达式func 或者如何使用指向要比较的属性的另一个表达式func来编写Where()可接受的表达式?

private void SomeMethod(Expression<Func<TDischargeResult, object>> field)       
{
    TBenchmark benchmark = null;

    AnalyticsReport report = null;

    IEnumerable<AnalyticsReport> reports = _session.QueryOver<TDischargeResult>()
        .JoinAlias(record => record.Benchmark, () => benchmark)
        //.Where(field > benchmark.Average) // compare score property to average 
        .SelectList(select =>
        {
            select.SelectAvg(field).WithAlias(() => report.Score);
            return select;
        }).Clone()
        .TransformUsing(Transformers.AliasToBean<AnalyticsReport>())
        .List<AnalyticsReport>();
    }

1 个答案:

答案 0 :(得分:0)

我可以提出另一种方法:

_session.QueryOver<TDischargeResult>()
        .JoinQueryOver(x=>x.Benchmark)
        .Where(x=>field>x.Average)

其余的代码。