c# columns Vérifiez si String/Record existe dans DataTable




c# datatable get data (4)

J'ai une chaîne et j'ai besoin de vérifier si une colonne "item_manuf_id" dans DataTable dtPs.Rows est égale à une certaine valeur

Je peux boucler toutes les lignes et comparer

String id = dtPs.Rows[number]["item_manuf_id"].ToString()
if ("some value".equals(id)) etc.

mais je me demande s'il existe un moyen de vérifier si DataTable contient l'enregistrement


Answer #1

Quelque chose comme ça

 string find = "item_manuf_id = 'some value'";
 DataRow[] foundRows = table.Select(find);

Answer #2

Je pense que si votre "item_manuf_id" est la clé primaire du DataTable vous pouvez utiliser la méthode Find ...

string s = "stringValue";
DataRow foundRow = dtPs.Rows.Find(s);
if(foundRow != null) {
 //You have it ...
 }

Answer #3

Utilisez la méthode Find si item_manuf_id est une clé primaire:

var result = dtPs.Rows.Find("some value");

Si vous voulez seulement savoir si la valeur est là, utilisez la méthode Contient .

if (dtPs.Rows.Contains("some value"))
{
  ...
}

La restriction de clé primaire s'applique à Contains .


Answer #4

Vous pouvez parcourir chaque ligne du DataTable et vérifier la valeur.

Je suis un grand fan de l'utilisation d'une boucle foreach lorsque IEnumerable s. Rend très simple et propre à regarder ou traiter chaque rangée

DataTable dtPs = // ... initialize your DataTable
foreach (DataRow dr in dtPs.Rows)
{
    if (dr["item_manuf_id"].ToString() == "some value")
    {
        // do your deed
    }
}

Vous pouvez également utiliser une PrimaryKey pour votre DataTable . Cela aide de diverses manières, mais vous devez souvent en définir un avant de pouvoir l'utiliser.

Un exemple d'utilisation d'un si à http://msdn.microsoft.com/en-us/library/z24kefs8(v=vs.80).aspx

DataTable workTable = new DataTable("Customers");

// set constraints on the primary key
DataColumn workCol = workTable.Columns.Add("CustID", typeof(Int32));
workCol.AllowDBNull = false;
workCol.Unique = true;

workTable.Columns.Add("CustLName", typeof(String));
workTable.Columns.Add("CustFName", typeof(String));
workTable.Columns.Add("Purchases", typeof(Double));

// set primary key
workTable.PrimaryKey = new DataColumn[] { workTable.Columns["CustID"] };

Une fois que vous avez défini une clé primaire et rempli des données, vous pouvez utiliser la méthode Find (...) pour obtenir les lignes correspondant à votre clé primaire.

Jetez un oeil à http://msdn.microsoft.com/en-us/library/y06xa2h1(v=vs.80).aspx

DataRow drFound = dtPs.Rows.Find("some value");
if (drFound["item_manuf_id"].ToString() == "some value")
{
    // do your deed
}

Enfin, vous pouvez utiliser la méthode Select () pour trouver des données dans un DataTable également disponible sur http://msdn.microsoft.com/en-us/library/y06xa2h1(v=vs.80).aspx .

String sExpression = "item_manuf_id == 'some value'";
DataRow[] drFound;
drFound = dtPs.Select(sExpression);

foreach (DataRow dr in drFound)
{
    // do you deed. Each record here was already found to match your criteria
}




datatable