Как сравнить лямбда-выражение со свойством псевдонима в QueryOver, где ограничение? - PullRequest
2 голосов
/ 26 июля 2011

Я пытаюсь написать общий макет запросов, которые имеют схожие ограничения и набор результатов, за исключением свойства оценки в отчете.Я передаю свойство Score как лямбда-выражение и могу использовать его в select, но Where () вызывает у меня горе.

Любые идеи о том, как make Where () работает с выражением func ИЛИ как написать выражение, приемлемое для Where (), используя другое выражение func, которое указывает на сравниваемое свойство?

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 голосов
/ 14 августа 2011

Я могу предложить альтернативный подход:

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

И остальная часть вашего кода.

...