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.
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);
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'
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);