C# 如何将lambda表达式与QueryOver where限制中的alias属性进行比较?
我正在尝试编写共享查询布局,这些查询共享类似的限制和结果集,但报告中的score属性除外。我将score属性作为lambda表达式传递,并且我能够在select中使用它,但是Where()让我很难过 关于make Where()与expression func配合使用有什么想法吗 或者如何使用指向要比较的属性的另一个表达式func编写Where()可接受的表达式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
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.平均值)
以及其他代码