Comment puis-je trier un datatable
Comment puis-je trier un datatable? J'ai besoin de revenir un datatable à partir d'une fonction. J'ai été aux prises avec cela pendant des heures, et de l'internet a un peu de réponses différentes, dont aucune ne semble fonctionner pour moi.
Edit: j'ai envie de frapper moi-même. Faire un DataView.Tri sur votre table, puis un DataView.ToTable() pour mettre les données triées dans un nouveau jeu de données...
Exemple:
Dim view As New DataView(OriginalDataSet) 'Put your original dataset into a dataview
view.Sort = "ColumnName" ' Sort your data view
Dim NewDataSet As DataTable = view.ToTable() ' Put your dataview into a new datatable
Fin de l'exemple
J'ai un relativement simple exemple, le tableau ci-dessous, prise à partir d'un enseignement de site web. Le seul hic, c'est qu'il y a des valeurs en double dans la ligne je suis en train de trier.
Module Module1
Sub Main()
' Get a DataTable instance from helper function.
Dim table As DataTable = GetTable()
End Sub
''' <summary>
''' Helper function that creates new DataTable.
''' </summary>
Function GetTable() As DataTable
' Create new DataTable instance.
Dim table As New DataTable
' Create four typed columns in the DataTable.
table.Columns.Add("Dosage", GetType(Integer))
table.Columns.Add("Drug", GetType(String))
table.Columns.Add("Patient", GetType(String))
table.Columns.Add("Date", GetType(DateTime))
' Add five rows with those columns filled in the DataTable.
table.Rows.Add(25, "Indocin", "David", DateTime.Now)
table.Rows.Add(50, "Enebrel", "Sam", DateTime.Now)
table.Rows.Add(10, "Hydralazine", "Christoff", DateTime.Now)
table.Rows.Add(21, "Combivent", "Janet", DateTime.Now)
table.Rows.Add(100, "Dilantin", "Melanie", DateTime.Now)
table.Rows.Add(21, "Aspirin", "Janet", DateTime.Now)
Return table
End Function
End Module
J'ai essayé de sélectionner dans un tableau, puis une boucle dans le tableau et de mettre chaque ligne dans une nouvelle table de données, mais l'sélectionnez n'est pas l'accaparement des lignes. Exemple:
drarray = ds.Sélectionnez("je veux sélectionner tous ici", "MySortColumn")
J'ai essayé différents bouclage des stratégies, à l'intérieur des boucles, etc et ne semblent pas comprendre cela.
J'ai essayé dataTable.DefaultView.Tri = "sortExp" mais je ne peux pas obtenir que cela fonctionne.
Donc ce qui me manque? Je figure avec la DefaultView et choisir les méthodes, je suis juste en manque de quelque chose syntactly.
Alors, quelle est la meilleure façon de le faire, et ce qui me manque?
- Merci. J'ai trouvé le modifier pour être utile.
Vous devez vous connecter pour publier un commentaire.
Utiliser un DataView pour créer un affichage de vos données dans la DataTable. Cela vous permet de trier, filtrer, etc. Voici un exemple en C#: Datatable VS dataview
DataTable.selectI()
retourne un tableau deDataRow
objets, donc c'est vraiment pas le tri de la DataTable existant. Steve version crée une nouvelle Table de données avec des copies des lignes qui ont été sélectionnés. Un DataView est utilisé pour appliquer un filtre à la DataTable existante sans la création d'une nouvelle Table de données.Vous pouvez utiliser quelque chose comme ceci:
.CopyToDataTable()
. C'est peut-être une méthode d'extension dans votre projet?Cela peut vous aider à sortExp peut être le terrain sur lequel basé sur le tri doit être effectué filterExp qui devrait renvoyer true ou false. en supposant que les champs suivants
Le code ci-dessus montre comment filtrer et trier les données de la table dt_item. L'expression de filtre sélectionne Date dont le Patient n'est pas NULLE. L'expression de tri des causes les résultats triés par la Date de la colonne