Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - Random Auswahl Datatable


Neggi - Do 23.04.15 12:03
Titel: Random Auswahl Datatable
Hallo,

ich hab folgendes Problem:

es soll mir durch eine Combobox eine Anzahl an Übungen, die sich in einer Access Tabelle befinden, ausgewählt werden und in ein DataGridview geschrieben werden. Das funktioniert mit dem Code darunter... nun will ich aber dass er nicht immer nur zum beispiel die ersten drei nimmt, sondern random drei aus der tabelle. Mit folgendem Code wählt er mir die Übungen aus, angefangen bei der ersten Reihe und nicht random:



C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
int anzahl = Convert.ToInt32(comboBox1.Text);

                 {string[] datensatz = new string[anzahl];
                for (int i = 0; i < anzahl; i++)
                {
                    datensatz[i] = dt.Rows[i][0].ToString();
                }
                dataGridView1.DataSource = datensatz;
                 }



Danke für die Hilfe im Vorhinein...

Liebe Grüße


Palladin007 - Do 23.04.15 12:30

Vorweg:

Access ist keine Datenbank, alles, wenn Du Daten in Datenbank-Format haben willst, dann verwende irgendein sinnvolles Datenbank-System.
Du kannst dir ja mal MsSQL, MySQL, der SQLite anschauen. Letzteres ist nur eine Datei.


Wir du eine zufällige Zeile bekommst:


SQL-Anweisung
1:
2:
3:
SELECT TOP 1 *
FROM tabelle
ORDER BY NEWID()


Ralf Jansen - Do 23.04.15 12:53

Die dortige Lösung gilt immer noch

http://www.entwickler-ecke.de/viewtopic.php?t=114208


Neggi - Do 23.04.15 13:05

Hallo noch einmal...sorry dass ich so lästig bin.

Ich würde gerne die dataTable die in dem ersten Datagridview angezeigt wird in einer anderen(random) Reihenfolge in dem zweiten Datagridview anzeigen. (siehe Anhang)
So wird die erste Datatable angezeigt.


C#-Quelltext
1:
2:
3:
4:
OleDbDataAdapter da = new OleDbDataAdapter(command);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;

Danke

Moderiert von user profile iconTh69: Quote- durch C#-Tags ersetzt


Th69 - Do 23.04.15 13:21

Wenn du eine Liste zufällig sortieren willst, dann benutze am besten den Fisher-Yates Shuffle [http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle], s. z.B. Fisher-Yates shuffle [http://www.dotnetperls.com/fisher-yates-shuffle] oder Shuffle [http://www.dotnetperls.com/shuffle].
Also lege eine Kopie deiner Liste (oder DataTable) an und sortiere dann die einzelnen Werte (bzw. Zeilen).

Aber da dir user profile iconRalf Jansen in dem anderen Thema schon eine Lösung gepostet hat, schließe ich diesen.