2010-01-16 11 views
7

¿Práctica recomendada al convertir valores de DataColumn en una matriz de cadenas?¿Práctica recomendada al convertir valores de DataColumn en una matriz de cadenas?

[Editar] Todos los valores de cierta DataColumn para todas las filas de DataTable que se convertirán en una matriz de cadena?

+2

¿Se puede especificar? Cualquier Datarow tiene la propiedad ItemArray que le devuelve una matriz de objetos en la misma secuencia que las columnas definidas para ella. Convertir los objetos a cadenas sería tan fácil como llamar a ToString() en cada valor, pero tal vez sea algo que quieras ... – flq

+0

Los valores de DataColumn se convertirán en una matriz de cadenas, pero estoy buscando el mejor método para implementar esto. – Ahmed

Respuesta

17

Si he entendido su objetivo desea especificar una columna en particular y devolver todos sus valores como una conjunto de cadenas

intente estos enfoques a cabo:

int columnIndex = 2; // desired column index 

// for loop approach   
string[] results = new string[dt.Rows.Count]; 
for (int index = 0; index < dt.Rows.Count; index++) 
{ 
    results[index] = dt.Rows[index][columnIndex].ToString(); 
} 

// LINQ 
var result = dt.Rows.Cast<DataRow>() 
        .Select(row => row[columnIndex].ToString()) 
        .ToArray(); 

Se podría sustituir columnIndex con columnName lugar, por ejemplo:

string columnName = "OrderId";" 

EDIT: lo solicitado una matriz de cadenas específicamente, pero en el caso usted es flexible con respecto a los requisitos, preferiría un List<string> para evitar la necesidad de determinar la longitud de la matriz antes del bucle for en el primer ejemplo y simplemente agregar ite ms a eso. También es una buena oportunidad para usar un bucle Foreach.

me vuelva a grabar el código de la siguiente manera:

List<string> list = new List<string>(); 
foreach (DataRow row in dt.Rows) 
{ 
    list.Add(row[columnIndex].ToString()); 
} 
1

DataRow.ItemArray Propiedad -

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

Además, la versión que está utilizando? Que debe salir la clase DataTableExtensions -

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

Y la clase DataRowExtensions -

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

+0

'DataRow.ItemArray' devuelve todos los valores en una fila como una matriz. Creo que OP quiere todos los valores en una columna como una matriz. ¿Quizás pueda ampliar su respuesta para ayudar a explicar cómo 'DataRow.ItemArray' y la clase' DataTableExtensions' pueden ayudar? – Ben

0

Sé que esta pregunta es viejo, pero lo encontré en mi búsqueda de Google tratando de hacer algo similar. Quería crear una lista a partir de todos los valores contenidos en una fila específica de mi datatable. En mi ejemplo de código a continuación, agregué un origen de datos SQL a mi proyecto en Visual Studio usando los asistentes de GUI y dejé caer el adaptador de tabla necesario en el diseñador.

'Create a private DataTable 
Private authTable As New qmgmtDataSet.AuthoritiesDataTable 

'Fill the private table using the table adapter 
Me.AuthoritiesTableAdapter1.Fill(Me.authTable) 

'Make the list of values 
Dim authNames As List(Of String) = New List(Of String)(From value As qmgmtDataSet.AuthoritiesRow In Me.authTable.Rows Select names.authName) 
Cuestiones relacionadas