Je suis confus sur DataTable.DefaultView.Sort. Voici le segment du code que je veux utiliser.
actionLogDT.DefaultView.Sort = "StartDate";
foreach (CustomerService.ActionLogStartEndRow logRow in actionLogDT)
{
// code here
}
Les échantillons que j'ai vus n'utilisent pas la boucle foreach et me perturbent donc sur la façon de traiter cela. Ce n'est pas le tri comme je le pensais.
Je vois que .DefaultView renvoie une vue et .Table génère une erreur de compilation.
Je devais adopter une approche légèrement différente. Ce post était le plus proche que j'ai pu trouver pour que mon code fonctionne. Voici le résultat de travail:
actionLogDT.DefaultView.Sort = "StartDate";
DataView dv = actionLogDT.DefaultView;
foreach (DataRowView logRow in dv) { . . . }
À partir de là, il me suffit de replacer la valeur dans son type approprié.
(string)logRow["Status"].ToString()
actionLogDT.DefaultView.Sort = "StartDate";
actionLogDT = actionLogDT.DefaultView.ToTable();
Le tri de la vue ne changera pas l'ordre de tri des données de la table, mais seulement l'ordre de la vue. Cela devrait fonctionner si vous faites plutôt votre foreach
sur la vue, en replaçant la ligne de DataRowView dans votre ligne fortement typée.
foreach (DataRowView logRowView in actionLogDT.DefaultView)
{
CustomerService.ActionLogStartEndRow logRow = logRowView.Row as CustomerService.ActionLogStartEndRow;
// code here
}
De plus, comme il semblait que vous vouliez parcourir en boucle des enregistrements, vous pouvez simplement parcourir les objets dataRowView
dans DefaultView
.
foreach (DataRowView drv in table.DefaultView)
{
string strValue = drv["ColumnName"].ToString();
// its also worth mentioning that a DataRowView has a Row
strValue = drv.Row["ColumnName"].ToString();
}
foreach (var logRow in actionLogDT.DefaultView.ToDataTable()) { ... }
S'il vous plaît essayez ceci:
actionLogDT.DefaultView.Sort = "["+actionLogDT.Columns[0].ColumnName+"] asc";
Si vous avez besoin d'une date de retour, vous pouvez faire quelque chose comme:
var dv = actionLogDT.DefaultView;
dv.Sort = "StartDate";
actionLogDT = dv.ToTable();
Juste curieux: Pourquoi utilisez-vous le DataRowView ?
c'est à dire.
foreach (DataRow row in actionLogDT.Rows)
{
Console.WriteLine(row["Status"]);
}