Beibehalten von Feldnamen über die F#/C#-Grenze hinweg

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Beibehalten von Feldnamen über die F#/C#-Grenze hinweg

by Anonymous » 23 Dec 2024, 11:37

Als Lernübung führe ich eine Datenanalyse an einer CSV-Datei mit 5.000 Zeilen unter Verwendung von F# und der Typanbieterfunktionalität von F# durch. Wenn ich den vom Typanbieter generierten Typ in f# verwende, werden die Kopfzeilen der CSV-Datei natürlich zu den Feldnamen des Typs.
type restaurantCsv = CsvProvider

type RawInspectionData(filename : string) =
member this.allData = restaurantCsv.Load(filename)

member public this.inspectionsList = this.allData.Data.ToList()

member this.FilterByName(name : string) =
this.allData.Data
|> Seq.filter (fun x -> x.EstablishmentName.Contains(name))

Außerdem rufe ich den F#-Code (in einer Bibliothek, die der obige Code erstellt) aus einer Unit-Test-C#-Datei auf. Es funktioniert gut. Aber wenn ich den IEnumerable verwende, den F# von FilterByName zurückgibt, bleiben die Informationen zum Feldnamen nicht erhalten. Ich habe also Code, der neue Feldnamen .Item1, Item2 usw. aus dem Tupel zuordnet:
var inspectionsOnCafes = inspections2013.FilterByName("Cafe");
var inspections = (from row in inspectionsOnCafes
select new
{
inspectorID = row.Item3,
restaurantName = row.Item5,
inspectionDate = row.Rest.Item6
}).ToList();

Meine Frage: Gibt es eine Möglichkeit, C# dazu zu bringen, die Feldnamen im F#-generierten Typ zu erkennen, sodass ich row.Item nicht zuordnen muss? # zu einem leicht lesbaren Feldnamen?
Mit anderen Worten, gibt es eine Möglichkeit, Code wie diesen zu erstellen:
inspectorID = row.InspectorID,
// etc.

Hinweis: Ich habe mir „Wie erstelle ich einen F#-Typanbieter, der von C# aus verwendet werden kann?“ angesehen. aber Cameron Taggerts Frage und Tomas Petriceks Antwort scheinen mir einen etwas anderen Aspekt der Typanbieter zu betreffen. Selbst wenn sie genau richtig sind, verstehe ich es nicht, also brauche ich noch etwas mehr Hilfe.

Top