it-swarm.com.de

So verschieben Sie eine DataTable-Zeile an die erste Position ihrer DataTable

Ich möchte eine bestimmte Zeile in einer asp.net-Datentabelle abrufen und diese als erste auf diese Datentabelle auf der Basis eines column1-Werts für die Spalte verschieben. Mein datierbarer dt1 wird über eine DB-Abfrage aufgefüllt, und der zu durchsuchende Wert wird über eine andere Abfrage aus einer anderen DB abgerufen, sodass ich den zum dt1 select-Zeitpunkt zu durchsuchenden Wert nicht kenne.

// I use this variable to search into
// DataTable
string valueToSearch = "some value";

Ich muss also den Wert some value in meiner Datentabelle in der Spalte column1 suchen. und verschieben Sie dann die gesamte Zeile an die erste Position.

Vielen Dank.

10
anmarti

Wir müssen die Zeilendaten klonen, bevor:

            DataRow[] dr = dtable.Select("column1 ='" + valueToSearch +"'");
            DataRow newRow = dtable.NewRow();
            // We "clone" the row
            newRow.ItemArray = dr[0].ItemArray;
            // We remove the old and insert the new
            ds.Tables[0].Rows.Remove(dr[0]);
            ds.Tables[0].Rows.InsertAt(newRow, 0);
25
anmarti

Sie müssen die Leistung auf diesem testen, aber eine Möglichkeit, dies zu tun, ist in der Abfrage selbst. Holen Sie sich die gewünschten Zeilen zuerst oben und kombinieren Sie diese mit den restlichen Zeilen.

Da ich nichts über Ihre Datenbank weiß, ist hier eine allgemeine Möglichkeit, dies zu tun:

SELECT Column1, Column2, Column3
FROM MyTable
WHERE Column1 = 'some value'

UNION

SELECT Column1, Column2, Column3
FROM MyTable
WHERE Column1 <> 'some value'
2
Wonko the Sane

Wenn die Spalte nur einen Datensatz für den gesuchten Wert enthält, versuchen Sie dies

DataRow[] dr = dtEmp.Select("column1 ='" + valueToSearch +"'");
myDataTable.Rows.InsertAt(dr[0], 0);
1
syed mohsin