2012-08-14 17 views
7

existiert habe ich einen String und ich brauche, um nachzusehen, ob eine Spalte „item_manuf_id“ in Datatable dtPs.Rows gleich zu bestimmten WertÜberprüfen Sie, ob String/Record in Datatable

Ich kann alle Zeilen geschleift und

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

aber ich frage mich, ob es eine Möglichkeit zu überprüfen, wenn DataTable den Datensatz enthält

Antwort

14

So etwas wie dieses

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

ich denke, dass, wenn Ihr „item_manuf_id“ ist der Primärschlüssel der Datentabelle Sie die Find Methode verwenden könnte ...

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

Verwenden Sie die Find Methode, wenn item_manuf_id ein Primärschlüssel ist:

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

Wenn Sie nur wissen wollen, ob der Wert in es dann mit dem Contains Methode.

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

Die Primärschlüsseleinschränkung gilt auch für Contains.

4

Sie können jede Zeile der DataTable Schleife durchlaufen und überprüfen Sie den Wert.

Ich bin ein großer Fan von foreach Schleife bei der Verwendung von IEnumerable s. Macht es sehr einfach und sauber zu betrachten oder bearbeiten jede Zeile

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

Alternativ Sie eine PrimaryKey für Ihre DataTable verwenden können. Dies hilft auf verschiedene Arten, aber Sie müssen oft eine definieren, bevor Sie sie verwenden können.

Ein Beispiel für eine, wenn bei 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"] }; 
mit

Sobald Sie einen Primärschlüssel definiert und Daten gefüllt, können Sie die Suche (...) Methode verwenden, um die Zeilen zu erhalten, die Ihre Suche Primärschlüssel.

Werfen Sie einen Blick auf 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 
} 

Schließlich Sie die Select() Methode, um Daten zu finden, bei innerhalb eines DataTable fand auch bei http://msdn.microsoft.com/en-us/library/y06xa2h1(v=vs.80).aspx verwenden können.

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 
} 
+1

Ich versuche, von diesem – Andrew

+0

@Kirk Is [Erweiterung] wegzukommen (http://stackoverflow.com/a/34438198/2404470) hilfreich? – xameeramir