2011-09-02 29 views
5

Tengo el siguiente método que devuelve el conjunto de datos. Estoy utilizando .NET 2,0Obtener valor de un DataSet en una variable

DataSet ds = GetAllRecords(); 

quiero conseguir valores de cada columna para una fila particular y ligarlo a una variable. ¿Cómo se puede lograr esto?

Actualmente, el método devuelve toda la fila de la tabla y tengo que buscar esa fila en particular en función de la ID.

Sin embargo, si eso no es posible que se me ocurre con

DataSet ds = GetSpecificRecord(id); 

Pero todavía necesito para obtener los valores de cada columna y enlazarlo a variable. Por favor consejo.

+0

Comprobar DataTable.Select método @ http: // MSDN. microsoft.com/en-us/library/det4aw50.aspx. En su tabla sería 'ds.Tables [0] .Seleccione (" ");' – Chandu

Respuesta

4
// Create a table 
DataTable table = new DataTable("users"); 
table.Columns.Add(new DataColumn("Id", typeof(int))); 
table.Columns.Add(new DataColumn("Name", typeof(string))); 

table.Rows.Add(1, "abc"); 
table.Rows.Add(2, "ddd"); 
table.Rows.Add(3, "fff"); 
table.Rows.Add(4, "hhh d"); 
table.Rows.Add(5, "hkf ds"); 

// Search for given id e.g here 1 

DataRow[] result = table.Select("Id = 1"); // this will return one row for above data 
foreach (DataRow row in result) 
{ 
    Console.WriteLine("{0}, {1}", row[0], row[1]); 
} 
0

Puede hacerlo con LINQ.

DataRow resultRow = ds.Tables["SomeTable"].AsEnumerable().Where(row => row.Field<int>("SomeID") == 1).FirstOrDefault(); 

para .NET 2.0 y por debajo

Si su DataTable tiene definida una clave principal, se puede encontrar la fila de esta manera:

DataTable table = ds.Tables["SomeTable"]; 
DataRow row = table.Rows.Find(1); 

Si no hay una clave principal, puede asignar uno como este:

DataTable table = ds.Tables["SomeTable"]; 
table.PrimaryKey = new DataColumn[] { table.Columns["SomeID"] }; 

DataRow row = table.Rows.Find(1); 

Otra opción es u SE La propiedad RowFilter del DefaultView, así:

DataTable table = ds.Tables["SomeTable"]; 

table.DefaultView.RowFilter = "SomeID == 1"; //not sure if it's == or = here 
DataRow row = table.DefaultView[0].Row; 

Por último, también se puede utilizar el método DataTable.Select() para buscar filas.

+0

Agradezco su respuesta. Estoy usando .NET 2.0 y no puedo usar expresiones de Lamda. Debería haber agregado eso a mi pregunta. Me disculpo. – kalls

2

Esto le dará el valor de la fila 0, obviamente, que tendría que modificar para múltiples filas devueltas

long id = ds.Tables[0].Rows[0].Field<long>("ID"); 
1

¿Has mirado en el uso de un conjunto de datos con tipo? Si busca una fila basada en la clave principal de una tabla, generará automáticamente un método para que usted obtenga una fila por ID y estará fuertemente tipada para que pueda obtener valores de columna por nombre.

Eran bastante útiles en .Net 2.0, pero LINQ los hizo bastante obsoletos.

Editar: Un poco mejor URL de referencia

http://www.c-sharpcorner.com/UploadFile/rupadhyaya/TypedDataSets12032005021013AM/TypedDataSets.aspx

1

Podemos obtener el valor del conjunto de datos mediante el uso de este método fácil:

System.Data.DataSet ds = db.MySelect(
        "Fields", 
        "Table", 
        "Condition" 
        ); 

     if (ds != null) 
     { 
      if (ds.Tables[0].Rows.Count > 0) 
      { 
       object value=Tables[0].Rows[indx]["field name"]; 
      } 
     } 
Cuestiones relacionadas