Zum Inhalt springen

[C#]*.CSV Datei sortieren und Zeile ausgeben


Lunkens

Empfohlene Beiträge

Hi!

Ich hab ein gleiches Problem mit meiner Hausarbeit und zwar erzeugt mein c#-Programm nach ein paar Berechnungen eine Datei.csv mit vielen Werten:

DatumZeit;F1;F2;F3;F4;F5;S1;S2;S3;S4;S5;U1;U2;U3;U4;U5;Uges;Efak;Ufak;Rfak;FakGes

01.01.0001 00:00:00;0;100;500;200;400;0;0;3;0;1;0;7,00386;17,67702;8,73486;13,30826;46,724;-36;-3,275997;-0,32;-39,596

01.01.0001 00:00:00;0;100;500;300;300;0;0;3;0;0;0;7,00386;17,67702;10,33355;10,33355;45,34798;-24;-4,652023;-0,24;-28,89202

01.01.0001 00:00:00;0;100;500;300;300;0;0;3;0;1;0;7,00386;17,67702;10,33355;11,63015;46,64457;-36;-3,355427;-0,24;-39,59543

01.01.0001 00:00:00;0;100;500;300;300;0;0;3;1;0;0;7,00386;17,67702;11,63015;10,33355;46,64457;-36;-3,355427;-0,24;-39,59543

01.01.0001 00:00:00;0;100;500;400;200;0;0;3;1;0;0;7,00386;17,67702;13,30826;8,73486;46,724;-36;-3,275997;-0,32;-39,596

01.01.0001 00:00:00;0;100;600;200;300;0;0;3;0;0;0;7,00386;19,89451;8,73486;10,33355;45,96678;-24;-4,033218;-0,24;-28,27322

01.01.0001 00:00:00;0;100;600;200;300;0;0;3;0;1;0;7,00386;19,89451;8,73486;11,63015;47,26338;-36;-2,736622;-0,24;-38,97662

01.01.0001 00:00:00;0;100;600;200;300;0;0;3;1;0;0;7,00386;19,89451;9,580546;10,33355;46,81247;-36;-3,187531;-0,24;-39,42753

01.01.0001 00:00:00;0;100;600;200;300;0;0;4;0;0;0;7,00386;20,61519;8,73486;10,33355;46,68746;-36;-3,312538;-0,24;-39,55254

01.01.0001 00:00:00;0;100;600;200;300;0;1;3;0;0;0;7,48952;19,89451;8,73486;10,33355;46,45244;-36;-3,547558;-0,24;-39,78756

01.01.0001 00:00:00;0;100;600;300;200;0;0;3;0;0;0;7,00386;19,89451;10,33355;8,73486;45,96678;-24;-4,033218;-0,24;-28,27322

Hier nochmal übersichtlicher als Screenshot:

tabellecsvdx0.jpg

Nun soll nach einer Spalte (Fakges) sortiert werden und die beste Lösung, also wo Fakges am niedrigsten ist, ausgegeben werden. Die ganz Spalte am besten als Objekt, oder irgendwie jeden Wert einzelnd.

Hab leider nichts brauchbares ergoogeln können. Ich hoffe ihr könnt mir helfen, denn bald ist Abgabe :)

Vielen Dank nochmal, Lunkens :hells:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke für den Tipp, bin da noch relativ neu, werd aber mal schauen ob ich ne gute Dokumentation finde. Ich hoffe es ist nicht zu schwer.

Als Idee wäre halt noch folgendes:

Datei zeilenweise einlesen, den String jeder Zeile an den Semikolen teilen, die einzelnen Werte in einem Array ablegen und die Zeilen ebenfalls wieder. Und dann das zweidimensionale Array anhand des entsprechenden Eintrags sortieren oder einfach den Eintrag ausgeben, wo der Wert am kleinsten ist.

Ist die Frage ob das bei teilweise 300MB Files nicht einfach viel zu langsam ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke für den Tipp, bin da noch relativ neu, werd aber mal schauen ob ich ne gute Dokumentation finde. Ich hoffe es ist nicht zu schwer.

Als Idee wäre halt noch folgendes:

Datei zeilenweise einlesen, den String jeder Zeile an den Semikolen teilen, die einzelnen Werte in einem Array ablegen und die Zeilen ebenfalls wieder. Und dann das zweidimensionale Array anhand des entsprechenden Eintrags sortieren oder einfach den Eintrag ausgeben, wo der Wert am kleinsten ist.

Ist die Frage ob das bei teilweise 300MB Files nicht einfach viel zu langsam ist.

Ist jetzt die Frage, ob ODBC schneller ist, als das pure lesen und sortieren der Werte.

Ich würd es eher so lösen, dass du die Datei Zeilenweise liest (StreamReader), dann parset, in ein Array und das dann sortieren.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wobei ich eine ähnliche Problemstellung kürzlich hatte und dies wie Cadpax beschrieben manuell gemacht habe:

in ein zweidimensionales array einlesen und dann mit bubblesort sortiert (waren nur ein paar Werte), falls du seeeehr viele Zeilen sortieren musst, wäre evtl. ein anderer sortieralgorithmus sinnvoller

Link zu diesem Kommentar
Auf anderen Seiten teilen

Jo Vielen Dank für die Tipps, werde mal nachlesen wie das mim Filestreamer geht, oder soll ich was anderes verwenden?

es könnte eigentlich auch nen 1dimensionales reichen, wie mein vorgänger erwähnt, würde die zeile halt die arrayindexnummer sei und der wert halt FGes.

Ist die Frage wie schnell sowas bei 300 MB Files geht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...