Trouver une ligne dans datatable avec un id spécifique
j'ai deux colonnes dans un datatable:
ID, Calls.
Comment puis je trouver la valeur des Appels est where ID = 5
?
5 peut être n'importe quelnombre, c'est juste un exemple. Chaque rangée a un ID unique.
8 réponses
Faire une chaîne de critères de recherche, comme ceci:
string searchExpression = "ID = 5"
Puis .Select()
méthode de l' DataTable
objet, comme ceci:
DataRow[] foundRows = YourDataTable.Select(searchExpression);
Maintenant vous pouvez boucler les résultats, comme ceci:
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
}
}
vous pouvez utiliser LINQ pour DataSet / DataTable
var rows = dt.AsEnumerable()
.Where(r=> r.Field<int>("ID") == 5);
puisque chaque ligne a un ID unique, vous devez utiliser Single/SingleOrDefault
ce qui ferait une exception si vous récupérez plusieurs enregistrements.
DataRow dr = dt.AsEnumerable()
.SingleOrDefault(r=> r.Field<int>("ID") == 5);
(remplacer int
pour le type de ton champ ID)
Vous pouvez essayer avec la méthode select
DataRow[] rows = table.Select("ID = 7");
je pourrais utiliser le code suivant. Merci à tous.
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);
DataRow dataRow = dataTable.AsEnumerable().FirstOrDefault(r => Convert.ToInt32(r["ID"]) == 5);
if (dataRow != null)
{
// code
}
Si c'est un DataSet typé:
MyDatasetType.MyDataTableRow dataRow = dataSet.MyDataTable.FirstOrDefault(r => r.ID == 5);
if (dataRow != null)
{
// code
}
essayez ce code
DataRow foundRow = FinalDt.Rows.Find(Value);
mais mis en location une touche primaire
Bonjour, il suffit de créer une fonction simple qui ressemble comme indiqué ci-dessous.. Renvoie toutes les lignes où le paramètre call saisi est valide ou true.
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();
}
et simplement l'appeler comme indiqué ci-dessous;
DataTable RowsFound=SearchRecords("IdColumn", OriginalTable,5);
Essayez d'éviter les boucles et aller pour cette si nécessaire.
string SearchByColumn = "ColumnName=" + value;
DataRow[] hasRows = currentDataTable.Select(SearchByColumn);
if (hasRows.Length == 0)
{
//your logic goes here
}
else
{
//your logic goes here
}
Si vous souhaitez rechercher un numéro, puis il devrait y avoir une clé primaire dans une table.