Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Empfohlene Antworten

Veröffentlicht

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:

*Gedankenspiel*

CSV-Dateien kannst du meine ich als ODBC-Datenqulle anbinden... Dann müsstest du mit einem SELECT * FROM [TABELLE] ORDER BY FakGes DESC doch dein gewünschtes ergebniss bekommen oder?

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.

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.

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

Wieso denn zweidimensional?

Ich muss einen Wert finden. Als Index habe ich das Arrayfeld.

Also

arr[150] ist die 151 Zeile?

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.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.