Konvertieren von F # -Angaben in LINQ-Ausdrücke

8

Ich kann ein Zitat vom Typ Expr<'a -> 'b> in einen Linq-Ausdruck über das folgende Snippet konvertieren:

%Vor%

Nun möchte ich ein Zitat vom Typ Expr<'a * 'b -> 'c> oder vielleicht sogar Expr<'a -> 'b -> 'c> in einen Linq Lambda-Ausdruck vom Typ Expression<Func<'a,'b'c>> umwandeln.

Wie kann ich das tun?

Grüße,   forki

    
forki23 21.04.2010, 11:34
quelle

1 Antwort

12

Ich bin nicht sicher, ob dies direkt von den im F # PowerPack verfügbaren LINQ-Modulen unterstützt wird. Sie können jedoch Ihre eigene Nachverarbeitung des von F # -Bibliotheken erzeugten LINQ-Ausdrucks implementieren, um ihn in eine C # -Lambda-Funktion der üblichen Form umzuwandeln:

Die folgende Funktion verwendet einen LINQ-Ausdruck, der aus mehreren verschachtelten LambdaExpression -Ausdrücken eines einzelnen Parameters (dh der vom F # -Übersetzer erzeugten Struktur) besteht und eine Liste von Parametern und dem Hauptteil des innersten Ausdrucks zurückgibt:

%Vor%

Jetzt können Sie es verwenden, um einen gewöhnlichen Func -Delegenten aus dem Typ wie int -> int -> int -> int wie folgt abzurufen:

%Vor%     
Tomas Petricek 21.04.2010, 14:50
quelle

Tags und Links