comment faire pour supprimer la ligne quand u boucle sur datatable
For Each Dr As DataRow In InvoiceDT.Rows
Dim DrResult As Array = PaymentInvoiceDT.Select("Amount='" & Dr("Amount").ToString() & "'")
If DrResult.Length > 0 Then
''some code
Else
InvoiceDT.Rows.remove(Dr)
End If
Next
Est en erreur, car lorsque vous changé quelque chose dans datatable, son index se changer.
OriginalL'auteur Sai Sherlekar | 2011-08-26
Vous devez vous connecter pour publier un commentaire.
Vous ne serez pas en mesure de le faire dans une boucle For each parce que lorsque vous supprimez quelque chose, la collection a changé et vous ne pouvez pas vous énumérer plus.
Ce que vous avez besoin est une inversion de la boucle For.
Cela fonctionne quand même comme vous supprimer des lignes, parce que ceux que vous êtes de ne pas toucher à ne pas avoir leur index changé et il n'utilise pas une énumération.
Si elle le fait, vous pouvez inverser l'ordre assez facilement par la suite pour le fixer. 🙂 N'oubliez pas si un post a répondu à votre question d'utiliser la marque pour la marque comme la réponse. Qui encourage plus de gens à vous aider plus tard. 🙂
comment puis-je annuler la commande? sans boucle
Sans une boucle? Je ne pense pas que vous le pouvez. Je ne vois pas pourquoi il faudrait inverser la liste à moins que votre "code" de la zone est en train de faire quelque chose à la liste qui en est la cause. Simplement en enlevant des trucs à ne pas l'inverser.
Peut-être un peu plus élégant d'utiliser
InvoiceDT.Rows.RemoveAt(i)
dans leElse
clause.OriginalL'auteur Tridus
Sai, il échoue parce que vous ne devrait pas vraiment supprimer les lignes tout en boucle dans toutes les lignes de la table.
un exemple de ce que vous pourriez faire, en C# est celui-ci:
donc vous voyez, vous devez d'abord sélectionner toutes les lignes à supprimer à l'aide de LINQ alors vous boucle uniquement sur les résultats et de les retirer de la table source.
désolé pas de temps à écrire VB.NET mais l'idée doit être clair, je l'espère.
Salut Ajit, pas vrai que l'on boucle sur le tableau mais nous supprimer de la table, il a travaillé, au moins, en août 2011, lorsque j'ai posté cette réponse.
Vous avez peut-être raison, j'ai raté le ToArray() la partie qui crée une nouvelle instance. Stackoverflow ne m'autorise pas à upvote la réponse.
OriginalL'auteur Davide Piras
Mon problème était que j'avais besoin de boucle d'une table plusieurs fois, de sorte que, après la suppression de lignes dans le premier tour, il serait de lancer une exception lors de l'entrée à l'index d'une ligne précédemment supprimée. J'ai fini par clonage de la table et copie dedans les lignes que je voulais garder.
OriginalL'auteur Jon
Itérer dans une DataTable et supprimer des lignes conditionnelle (par exemple: rangée de column_id 16), vous pouvez utiliser le code suivant:
OriginalL'auteur Jishad
Pouvez-vous ne pas supprimer à l'aide d'un simple
DELETE
déclaration?DELETE FROM xxx WHERE Amount = yyy
OriginalL'auteur CyberDude