Ich versuche, diese C# Methode zu konvertieren, die Schnittstellen und Linq zu f # verwendet:C# zu f # Umwandlung mit Schnittstellen und Linq Aussagen
public static IEnumerable<ModelEngines> CurrentEngineBuilds(IEnumerable<CurrentModels> thisYearModels, DateTime startRunDate, DateTime endRunDate)
{
var engineOptions =
currentModelYear.SelectMany(c => c.Engines)
.Where(e => e.EngineProdStartDate >= startRunDate & e.EngineProdStopDate <= endRunDate);
return engineOptions;
}
Bei dem Verfahren oben, ich bin eine Sammlung von engineOptions Rückkehr - Typ ist IEnumerable. Ich filtere die Sammlung, sodass die Sammlung nur EngineOptions mit einem bestimmten Produktionsbereich aus dem aktuellen Modelljahr enthält.
Ich habe diese raue, nicht arbeitende, Übersetzung unter:
let CurrentEngineBuilds : <IEnumerable<ModelEngines>> (thisYearModels : IEnumerable<CurrentModels>) (startRunDate : DateTime) (endRunDate : DateTime) =
query {
for engineOptions in currentModelYear.engineOptions do
where (engineOptions.EngineProdStartDate >= startRunDate and engineOptions.EngineProdEndDate >= endRunDate)
select (engineOptions)
}
engineOptions
Diese Aufgabe ist komplizierter geworden, als ich erwartet hatte. Ich habe ein paar f # -Tutorials durchgelesen, um die Grundlagen zu verstehen, aber es scheint, dass alles, was mit Schnittstellen und/oder linq zu tun hat, ziemlich schwierig ist.
Einige Fragen habe ich:
- Wie zum Teufel Sie mit Schnittstellen in f # arbeiten?
- Gibt es ein F-Äquivalenz der SelectMany-Methode?
Irgendwelche Tipps, wie man diese C# zu f # Umwandlung macht?
Danke! Ein paar Fragen. Ich nehme an (Spaß c -> c.Engines) Art der Syntax ist wie der C# Lambda-Operator? Was macht der Operator '|>? Nochmals vielen Dank ... – SkyeBoniwell
@ 999cm999: Ja, das ist F # Syntax für ein Lambda. Der '|>' Operator ändert 'fv' in' v |> f' und ist Fis 'Redewendung für monadische Verkettung (Dokumentation ist [hier] (https://msdn.microsoft.com/en-us/visualfsharpdocs/conceptual/ Operatoren.% 5b-h% 5d-% 5d% 5b't1, '% 5d-function-% 5bfsharp% 5d)). – ildjarn