Q: Copying part of a table

G

G .Net

Hi

I'm wondering if anybody can help me with the following problem?

I have a table with several rows. I want to create a new table, with exactly
the same structure, but has only a subset of the rows in the original table.

I have been able to do this using the following code but wonder if there is
a more efficient/fast way of doing it.

Dim subsetTable As DataTable = sourceTable.Clone()

For Each row As DataRow In sourceTable.Select("[Name] = 'John'")
Dim newRow As DataRow = subsetTable.NewRow()
For i As Integer = 0 To sourceTable.Columns.Count - 1
newRow(i) = row(i)
Next
subsetTable.Rows.Add(newRow)
Next

Using the code above I can a new table which has all the rows from the
source table with the field "Name" set to "John".

Can anybody suggest a more efficient/fast way of doing this?

Thanks in advance
 
P

Pritcham

Hi

You can actually do this via SQL. If you use the "INSERT INTO myTable"
statement then it will add rows to an existing table, if you use
"SELECT INTO myTable" it will create the table first, then add the
details. Both of these can have a WHERE clause so you can filter
what's going in to the table.

Hope that helps
Martin
 
G

G .Net

Hi Martin

Good idea, but I don't think you can do this via DataSets only - which is my
intention.

Pritcham said:
Hi

You can actually do this via SQL. If you use the "INSERT INTO myTable"
statement then it will add rows to an existing table, if you use
"SELECT INTO myTable" it will create the table first, then add the
details. Both of these can have a WHERE clause so you can filter
what's going in to the table.

Hope that helps
Martin
Hi

I'm wondering if anybody can help me with the following problem?

I have a table with several rows. I want to create a new table, with
exactly
the same structure, but has only a subset of the rows in the original
table.

I have been able to do this using the following code but wonder if there
is
a more efficient/fast way of doing it.

Dim subsetTable As DataTable = sourceTable.Clone()

For Each row As DataRow In sourceTable.Select("[Name] = 'John'")
Dim newRow As DataRow = subsetTable.NewRow()
For i As Integer = 0 To sourceTable.Columns.Count - 1
newRow(i) = row(i)
Next
subsetTable.Rows.Add(newRow)
Next

Using the code above I can a new table which has all the rows from the
source table with the field "Name" set to "John".

Can anybody suggest a more efficient/fast way of doing this?

Thanks in advance
 
G

Guest

G.Net,

In .Net 2.0 you can create a dataview of the original datatable, filter it
to contain only the rows you want, and then use the dataview's ToTable method
to create a new datatable containing only the rows from the filtered dataview.

Kerry Moorman


G .Net said:
Hi Martin

Good idea, but I don't think you can do this via DataSets only - which is my
intention.

Pritcham said:
Hi

You can actually do this via SQL. If you use the "INSERT INTO myTable"
statement then it will add rows to an existing table, if you use
"SELECT INTO myTable" it will create the table first, then add the
details. Both of these can have a WHERE clause so you can filter
what's going in to the table.

Hope that helps
Martin
Hi

I'm wondering if anybody can help me with the following problem?

I have a table with several rows. I want to create a new table, with
exactly
the same structure, but has only a subset of the rows in the original
table.

I have been able to do this using the following code but wonder if there
is
a more efficient/fast way of doing it.

Dim subsetTable As DataTable = sourceTable.Clone()

For Each row As DataRow In sourceTable.Select("[Name] = 'John'")
Dim newRow As DataRow = subsetTable.NewRow()
For i As Integer = 0 To sourceTable.Columns.Count - 1
newRow(i) = row(i)
Next
subsetTable.Rows.Add(newRow)
Next

Using the code above I can a new table which has all the rows from the
source table with the field "Name" set to "John".

Can anybody suggest a more efficient/fast way of doing this?

Thanks in advance
 
G

G .Net

Thanks Kerry. Very interesting.

Kerry Moorman said:
G.Net,

In .Net 2.0 you can create a dataview of the original datatable, filter it
to contain only the rows you want, and then use the dataview's ToTable
method
to create a new datatable containing only the rows from the filtered
dataview.

Kerry Moorman


G .Net said:
Hi Martin

Good idea, but I don't think you can do this via DataSets only - which is
my
intention.

Pritcham said:
Hi

You can actually do this via SQL. If you use the "INSERT INTO myTable"
statement then it will add rows to an existing table, if you use
"SELECT INTO myTable" it will create the table first, then add the
details. Both of these can have a WHERE clause so you can filter
what's going in to the table.

Hope that helps
Martin

G .Net wrote:
Hi

I'm wondering if anybody can help me with the following problem?

I have a table with several rows. I want to create a new table, with
exactly
the same structure, but has only a subset of the rows in the original
table.

I have been able to do this using the following code but wonder if
there
is
a more efficient/fast way of doing it.

Dim subsetTable As DataTable = sourceTable.Clone()

For Each row As DataRow In sourceTable.Select("[Name] = 'John'")
Dim newRow As DataRow = subsetTable.NewRow()
For i As Integer = 0 To sourceTable.Columns.Count - 1
newRow(i) = row(i)
Next
subsetTable.Rows.Add(newRow)
Next

Using the code above I can a new table which has all the rows from the
source table with the field "Name" set to "John".

Can anybody suggest a more efficient/fast way of doing this?

Thanks in advance
 
C

Cor Ligthert [MVP]

G.

You can very simple use the overloaded new 2005 method from the dataview
ToTable for this.

I hope this helps,

Cor
 
G

G .Net

Thanks Cor

Cor Ligthert said:
G.

You can very simple use the overloaded new 2005 method from the dataview
ToTable for this.

I hope this helps,

Cor

G .Net said:
Hi

I'm wondering if anybody can help me with the following problem?

I have a table with several rows. I want to create a new table, with
exactly the same structure, but has only a subset of the rows in the
original table.

I have been able to do this using the following code but wonder if there
is a more efficient/fast way of doing it.

Dim subsetTable As DataTable = sourceTable.Clone()

For Each row As DataRow In sourceTable.Select("[Name] = 'John'")
Dim newRow As DataRow = subsetTable.NewRow()
For i As Integer = 0 To sourceTable.Columns.Count - 1
newRow(i) = row(i)
Next
subsetTable.Rows.Add(newRow)
Next

Using the code above I can a new table which has all the rows from the
source table with the field "Name" set to "John".

Can anybody suggest a more efficient/fast way of doing this?

Thanks in advance
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top