StrataFrame Forum
Back
Login
Login
Home
»
.NET Forums
»
General .NET Discussion
»
How to delete items from a DataTable during an enumeration
How to delete items from a DataTable during an enumeration
Post Reply
Like
0
How to delete items from a DataTable during an enumeration
View
Flat Ascending
Flat Descending
Threaded
Options
Subscribe to topic
Print This Topic
RSS Feed
Goto Topics Forum
Author
Message
Trent Taylor
Trent Taylor
posted 17 Years Ago
ANSWER
Post Details
Share Post
Group: StrataFrame Developers
Posts: 6.6K,
Visits: 6.9K
Good.
Reply
Like
0
Greg McGuffey
Greg McGuffey
posted 17 Years Ago
ANSWER
Post Details
Share Post
Group: Forum Members
Posts: 2K,
Visits: 6.6K
Got it. I think the DataRow.Delete() works because it doesn't remove the item from the collection until you AcceptChanges, which I'm doing after the enum.
Reply
Like
0
Trent Taylor
Trent Taylor
posted 17 Years Ago
ANSWER
Post Details
Share Post
Group: StrataFrame Developers
Posts: 6.6K,
Visits: 6.9K
This has nothing to do with data tables, but rather any type of collection in .NET. If you had tried removing items from a collection inside of a loop you would have had the same issue.
Reply
Like
0
Greg McGuffey
Greg McGuffey
posted 17 Years Ago
ANSWER
Post Details
Share Post
Group: Forum Members
Posts: 2K,
Visits: 6.6K
Thanks for the help. While implementing what you suggestion, I noticed that the DataRow has a Delete method...then I noticed an AcceptChanges property on the DataTable. I tried this and it works:
Dim myTable As DataTable
'...fill table, two columns a string and an integer
For Each myRow As DataRow In myTable.Rows
If myRow.Item(1) = 34 Then
myRow.Delete()
End If
Next
myTable.AcceptChanges
Apparently, the Delete() method of the row just marks it for deletion (thus doesn't whack the enumeration). The AcceptChanges property actually removes the rows.
Reply
Like
0
Trent Taylor
Trent Taylor
posted 17 Years Ago
ANSWER
Post Details
Share Post
Group: StrataFrame Developers
Posts: 6.6K,
Visits: 6.9K
It is because you are changing the contents of the value being enumerated. You can't do this. Just create an array or list that has all of the rows that you want to delete inside of the loop. Then create another loop that cycles through the array you created to actually delete the rows.
Reply
Like
0
Greg McGuffey
Greg McGuffey
posted 17 Years Ago
ANSWER
Topic Details
Share Topic
Group: Forum Members
Posts: 2K,
Visits: 6.6K
I'm trying to enumerate all the rows in a DataTable and if a certain condition is met, delete the current row. .NET doesn't like this:
Dim myTable As DataTable
'...fill table, two columns a string and an integer
For Each myRow As DataRow In myTable.Rows
If myRow.Item(1) = 34 Then
myTable.Delete(myRow)
End If
Next
It bombs when the Next statement hits. Is there another way to do this?
Reply
Like
0
GO
Merge Selected
Merge into selected topic...
Merge into merge target...
Merge into a specific topic ID...
Open Merge
Post Reply
Like
0
Similar Topics
Post Quoted Reply
Reading This Topic
Login
Login
Remember Me
Reset Password
Resend Validation Email
Login
Explore
Messages
Mentions
Search