2012-08-14 7 views
7

Mam String i muszę sprawdzić, czy każdy kolumna „item_manuf_id” w DataTable dtPs.Rows równa określonej wartościSprawdź, czy String/Record istnieje w DataTable

mogę pętli nad wszystkich wierszy i porównać

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

ale zastanawiam się czy jest jakiś sposób, aby sprawdzić, czy DataTable zawiera zapis

Odpowiedz

14

coś takiego

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

myślę, że jeśli „item_manuf_id” jest kluczem podstawowym z DataTable można użyć metody Find ...

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

użyć metody Find jeśli item_manuf_id jest kluczem podstawowym:

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

Jeśli chcesz tylko wiedzieć, czy wartość jest tam następnie użyć Contains metoda.

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

Ograniczenie klucza głównego dotyczy również Contains.

4

Możesz zapętlić każdy wiersz DataTable i sprawdzić wartość.

Jestem wielkim fanem używania pętli foreach podczas korzystania z IEnumerable s. Sprawia to bardzo proste i czyste spojrzenie na lub przetworzyć każdy wiersz

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

Alternatywnie można użyć PrimaryKey dla DataTable. Pomaga to na różne sposoby, ale często trzeba je zdefiniować, zanim będzie można z niego skorzystać.

Przykładem użyciu jednej czy na 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"] }; 

skoro masz klucz podstawowy zdefiniowany i zaludnionych danych, można użyć znaleźć (...) sposób, aby uzyskać wierszy pasujących do wpisanych główny klucz.

Spójrz na 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 
} 

Wreszcie, można użyć select() metoda na znalezienie danych w obrębie DataTable również na co 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 
} 
+1

Próbuję uciec od tego – Andrew

+0

@Kirk to [rozszerzenie] (http://stackoverflow.com/a/34438198/2404470) była pomocna? – xameeramir