2012-04-15 3 views
4

Gibt es eine Möglichkeit, eine Liste der Elemente aus einer Funktion abzurufen, die an SelectList() übergeben werden kann?Abrufen von NHibernate QueryOver .SelectList (x) aus Funktion

Also anstatt dies zu tun

var dtos = repository.QueryOver<MicrofilmExportProcessed>() 
        .SelectList(list => list 
         .Select(x => x.Member1).WithAlias(() => dto.Member1) 
         .Select(x => x.Member2).WithAlias(() => dto.Member2) 
         .Select(x => x.Member3).WithAlias(() => dto.Member3)) 
        .List<MicrofilmExportProcessed>(); 

mache ich etwas wie folgt aus:

var dtos = repository.QueryOver<MicrofilmExportProcessed>() 
        .SelectList(getMembersFromFunc()) 
        .List<MicrofilmExportProcessed>(); 

Ich habe versucht, Verfahren zu schaffen, die den gleichen Typ wie der Eingabeparameter des Select kehrt aber es sagt mir immer noch die Eingabetyp ist ungültig. Nicht sicher, was ich vermisse.

Antwort

8

So etwas wie

Func<QueryOverProjectionBuilder<InvoiceDto>, QueryOverProjectionBuilder<InvoiceDto>> GetList() 
{ 
    InvoiceDto dto = null; 
    return list => list.Select(w => w.Client).WithAlias(() => dto.Client); 
} 

und nennen Sie es wie

return Session.QueryOver<InvoiceDto>() 
    .SelectList(GetList()) 
    .TransformUsing(Transformers.AliasToBean<InvoiceDto>()) 
    .List<InvoiceDto>(); 
Verwandte Themen