2011-07-26 8 views
2

私は同様の制限を共有するクエリの共有レイアウトを作成しようとしていますが、結果セットはレポートのscoreプロパティを除いて設定されています。私はラムダ式としてスコアプロパティを渡しています。私はselectで使うことができますが、Wh​​ere()は私に悲しみを与えています。制限があるQueryOverのラムダ式とエイリアスプロパティを比較するにはどうすればよいですか?

where()は式funcで動作する または書く方法Where()に受け入れられる式は、比較するプロパティを指す別の式funcを使用していますか?あなたのコードの

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

そして残り:

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>(); 
    } 

答えて

0

私は別のアプローチを提案することができます。

関連する問題