2016-07-20 7 views
0

Ich habe eine LINQ-Anweisung wo innerhalb der Wählen Sie Ich muss eine Methode aufrufen, die als Parameter das Element in der Abfrage ausgewählt hat.LINQ Aufruf einer Methode innerhalb Wählen Sie übergeben als Parameter das ausgewählte Element

Hier ist ein Beispiel:

List<Foo> foos = new List<Foo> {....}; 

float GetPrice(Foo) {....} 

var query = foos 
    .Where(x => x.ID == 1) 
    .Select(x => new 
    { 
    aaa = GetPrice(????) 
    }); 

Wie kann ich die ausgewählt Foo im Aufruf von GetPrice angeben (????)?

+3

'GetPrice (x)'. – stuartd

+0

Es ist der Name, den Sie in Ihrem Lambda angegeben haben: 'x'. –

+0

Haben Sie eine Erinnerung daran, die 'Where'-Klausel zu schreiben? –

Antwort

2

Die x in Ihrer Select() Anweisung wird ein Foo Objekt darzustellen, da Sie von einem List<Foo> abfragen, so dass Sie nur in der Lage sein sollten, in x auf Ihre GetPrice() Methode zu übergeben:

aaa = GetPrice(x) 

So Ihres Der gesamte Code würde etwa so aussehen:

var query = foos.Where(x => x.ID == 1) 
       .Select(x => new { 
         aaa = GetPrice(x) 
       }); 
+0

Da die Signatur von 'GetPrice' 'float GetPrice (Foo)' 'ist, können Sie den Namen der Methodengruppe anstelle von Lambda verwenden:' foos.Where (...). Wählen Sie (GetPrice); ' –

+0

@Rion Williams You 'hast recht. Vielen Dank für Ihre schnelle Antwort! – vcRobe

+0

Guter Punkt René, ich vergesse oft die Methodengruppen-Syntax oder verwende sie einfach nicht so oft wie ich sollte (und ich hapele nicht häufig eine einzelne Eigenschaft zu oft). –

Verwandte Themen