Une boucle dans un datatable et supprimer la ligne
J'ai rempli un Datatable, à partir de 2 serveurs différents. Je suis en mesure de faire les ajustements ma longueur>0, ce que je veux faire est de supprimer les lignes qui ne l'atteint pas. Voici un résumé de ce que j'ai
DataRow[] dr = payments.dtPayments.Select(myselect);
if (dr.Length > 0)
{
for (int a = 0; a < dr.Length; a++)
{
if (thisOption == true)
dr[0].Delete();
else if (otherOption == true)
{
dr[0]["Date"] = myDataReader["date"].ToString().Trim();
dr[0]["Pay"] = payTypeName(myDataReader["ccdsrc"].ToString()
.Trim());
}
}
}
if (dr.Length == 0)
{
if (LastOption == true)
{
//DataRow should be removed
}
}
OriginalL'auteur | 2008-11-24
Vous devez vous connecter pour publier un commentaire.
Si dr.La longueur est égale à zéro, puis que vous sélectionnez n'a pas renvoyé de lignes. Si vous souhaitez supprimer les lignes qui ne correspondent pas à vos critères, alors je voudrais mettre en œuvre que sous un autre type de requête. Il se pourrait aussi que je suis ne comprends pas votre question. Pourriez-vous mettre à jour votre question afin de montrer votre SQL et indiquer où, dans l'exemple de code que vous rencontrez le problème: à l'intérieur de la boucle ou après la boucle où vous avez votre commentaire?
OriginalL'auteur tvanfosson
Je ne suis pas sûr que je comprends très bien votre question, mais il semble que vous essayez de supprimer une entrée de la collection, tandis que vous êtes encore en boucle sur elle. (ce qui va provoquer un index de tableau d'erreur)
Vous devez enregistrer une référence pour chaque entrée que vous souhaitez supprimer dans une nouvelle collection, puis retirez toutes les nouvelles entrées de la vieille collection:
OriginalL'auteur Yona
Vous avez besoin pour créer un datarow en dehors de la boucle, puis, quand vous obtenez à la ligne que vous souhaitez supprimer de l'affecter à la ligne que vous avez créé à l'extérieur. et de briser la boucle. Puis en dessous de la boucle, vous pouvez le supprimer.
OriginalL'auteur Chris Lees
Avez-vous essayé?
paiements.dtPayments.Les lignes.Supprimer(dr)
OriginalL'auteur Sergio
Vous pouvez parcourir la collection en sens inverse (for (int i=lignes.longueur-1;x>-1;x--) ) pour supprimer plusieurs lignes pour vous assurer de ne pas obtenir de l'indice hors limite les erreurs.
OriginalL'auteur Rick Strahl