c# - seleccionar - Encontrar fila en datatable con id específico
find row in datatable c# (8)
Tengo dos columnas en un datatable:
ID, Calls.
¿Cómo encuentro cuál es el valor de Llamadas where ID = 5
?
5 podría ser cualquier número, es solo por ejemplo. Cada fila tiene una identificación única.
Haz una cadena de criterios para buscar, como esto:
string searchExpression = "ID = 5"
Luego use el método .Select()
del objeto DataTable
, como este:
DataRow[] foundRows = YourDataTable.Select(searchExpression);
Ahora puedes recorrer los resultados, así:
int numberOfCalls;
bool result;
foreach(DataRow dr in foundRows)
{
// Get value of Calls here
result = Int32.TryParse(dr["Calls"], out numberOfCalls);
// Optionally, you can check the result of the attempted try parse here
// and do something if you wish
if(result)
{
// Try parse to 32-bit integer worked
}
else
{
// Try parse to 32-bit integer failed
}
}
Hola, simplemente cree una función simple que se vea como se muestra a continuación. Eso devuelve todas las filas donde el parámetro de llamada ingresado es válido o verdadero.
public DataTable SearchRecords(string Col1, DataTable RecordDT_, int KeyWORD)
{
TempTable = RecordDT_;
DataView DV = new DataView(TempTable);
DV.RowFilter = string.Format(string.Format("Convert({0},''System.String'')",Col1) + " LIKE ''{0}''", KeyWORD);
return DV.ToTable();
}
y simplemente llámelo como se muestra abajo;
DataTable RowsFound=SearchRecords("IdColumn", OriginalTable,5);
donde 5 es el ID. Gracias..
Intenta evitar los bucles innecesarios y ve por esto si es necesario.
string SearchByColumn = "ColumnName=" + value;
DataRow[] hasRows = currentDataTable.Select(SearchByColumn);
if (hasRows.Length == 0)
{
//your logic goes here
}
else
{
//your logic goes here
}
Si desea buscar por ID específico, debe haber una clave principal en una tabla.
Podría usar el siguiente código. Gracias a todos.
int intID = 5;
DataTable Dt = MyFuctions.GetData();
Dt.PrimaryKey = new DataColumn[] { Dt.Columns["ID"] };
DataRow Drw = Dt.Rows.Find(intID);
if (Drw != null) Dt.Rows.Remove(Drw);
Puedes probar con el método seleccionado
DataRow[] rows = table.Select("ID = 7");
Puedes usar LINQ para DataSet / DataTable
var rows = dt.AsEnumerable()
.Where(r=> r.Field<int>("ID") == 5);
Debido a que cada fila tiene una ID única, debe usar Single/SingleOrDefault
que generaría una excepción si obtiene varios registros.
DataRow dr = dt.AsEnumerable()
.SingleOrDefault(r=> r.Field<int>("ID") == 5);
(Sustituya int
por el tipo de su campo de ID)
prueba este código
DataRow foundRow = FinalDt.Rows.Find(Value);
pero establecido al menos una clave primaria
DataRow dataRow = dataTable.AsEnumerable().FirstOrDefault(r => Convert.ToInt32(r["ID"]) == 5);
if (dataRow != null)
{
// code
}
Si es un conjunto de datos escrito:
MyDatasetType.MyDataTableRow dataRow = dataSet.MyDataTable.FirstOrDefault(r => r.ID == 5);
if (dataRow != null)
{
// code
}