Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting datarow values into a string?

I have a dataset called "results" with several rows of data. I'd like to get this data into a string, but I can't quite figure out how to do it. I'm using the below code:

string output = "";
foreach (DataRow rows in results.Tables[0].Rows)     
{
    output = output + rows.ToString() + "\n";
}

However, I think I'm missing something because this isn't working. Can someone point me in the right direction?

like image 360
Kevin Avatar asked Mar 08 '12 15:03

Kevin


4 Answers

You need to specify which column of the datarow you want to pull data from.

Try the following:

        StringBuilder output = new StringBuilder();
        foreach (DataRow rows in results.Tables[0].Rows)
        {
            foreach (DataColumn col in results.Tables[0].Columns)
            {
                output.AppendFormat("{0} ", rows[col]);
            }

            output.AppendLine();
        }
like image 171
Khan Avatar answered Nov 17 '22 14:11

Khan


I've done this a lot myself. If you just need a comma separated list for all of row values you can do this:

StringBuilder sb = new StringBuilder();
foreach (DataRow row in results.Tables[0].Rows)     
{
    sb.AppendLine(string.Join(",", row.ItemArray));
}

A StringBuilder is the preferred method as string concatenation is significantly slower for large amounts of data.

like image 27
SPFiredrake Avatar answered Nov 17 '22 13:11

SPFiredrake


You can get a columns value by doing this

 rows["ColumnName"]

You will also have to cast to the appropriate type.

 output += (string)rows["ColumnName"]
like image 7
Matthew Avatar answered Nov 17 '22 12:11

Matthew


Your rows object holds an Item attribute where you can find the values for each of your columns. You can not expect the columns to concatenate themselves when you do a .ToString() on the row. You should access each column from the row separately, use a for or a foreach to walk the array of columns.

Here, take a look at the class:

http://msdn.microsoft.com/en-us/library/system.data.datarow.aspx

like image 4
Andrei G Avatar answered Nov 17 '22 13:11

Andrei G