C# 如何将lambda表达式与QueryOver where限制中的alias属性进行比较?

C# 如何将lambda表达式与QueryOver where限制中的alias属性进行比较?,c#,.net,nhibernate,lambda,queryover,C#,.net,Nhibernate,Lambda,Queryover,我正在尝试编写共享查询布局,这些查询共享类似的限制和结果集,但报告中的score属性除外。我将score属性作为lambda表达式传递,并且我能够在select中使用它,但是Where()让我很难过 关于make Where()与expression func配合使用有什么想法吗 或者如何使用指向要比较的属性的另一个表达式func编写Where()可接受的表达式 private void SomeMethod(Expression<Func<TDischargeResult, obj

我正在尝试编写共享查询布局,这些查询共享类似的限制和结果集,但报告中的score属性除外。我将score属性作为lambda表达式传递,并且我能够在select中使用它,但是Where()让我很难过

关于make Where()与expression 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>();
    }
private void方法(表达式字段)
{
TBenchmark benchmark=null;
AnalyticsReport报告=null;
IEnumerable reports=\u session.QueryOver()
.JoinAlias(record=>record.Benchmark,()=>Benchmark)
//.Where(field>benchmark.Average)//将分数属性与平均值进行比较
.SelectList(选择=>
{
选择.SelectAvg(field).WithAlias(()=>report.Score);
返回选择;
}).Clone()
.TransformUsing(Transformers.AliasToBean())
.List();
}

我可以建议另一种方法:

_session.QueryOver<TDischargeResult>()
        .JoinQueryOver(x=>x.Benchmark)
        .Where(x=>field>x.Average)
\u session.QueryOver()
.JoinQueryOver(x=>x.Benchmark)
.其中(x=>字段>x.平均值)

以及代码的其余部分。

我可以建议另一种方法:

_session.QueryOver<TDischargeResult>()
        .JoinQueryOver(x=>x.Benchmark)
        .Where(x=>field>x.Average)
\u session.QueryOver()
.JoinQueryOver(x=>x.Benchmark)
.其中(x=>字段>x.平均值)
以及其他代码