2013-12-17 15 views
25

Ich habe zwei Spalten in einer Datentabelle:Suche in Datentabelle mit spezifischer ID Zeile

ID, Calls. 

Wie finde ich, was der Wert der Anrufe where ID = 5 ist?

5 könnte anynumber sein, es ist nur zum Beispiel. Jede Zeile hat eine eindeutige ID.

+0

Konnte das nicht als Teil der Select-Anweisung ausgeführt werden? "SELECT ID, Anrufe von MyTable WHERE ID = @ id_search". Dann geben Sie einfach den Parameter "@id_search" für den Datenbankaufruf an. Dies wird schneller sein als LINQ, insbesondere unter der Annahme, dass die ID ein Primärschlüssel ist oder indiziert ist. –

+0

Keine Datenbank, Dataset/Datatable Ich habe Angst. – RSM

Antwort

45

ein String-Kriterien für die Suche Stellen, wie folgt aus:

string searchExpression = "ID = 5" 

Dann nutzen Sie die .Select() Methode des DataTable Objekt, wie dieses:

DataRow[] foundRows = YourDataTable.Select(searchExpression); 

Jetzt können Sie blättern durch die Resultate, wie folgt aus:

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 

    } 
} 
+0

Dies gibt mir den Datarow, aber wie bekomme ich den spezifischen Wert aus den Spaltenaufrufen – RSM

+0

@RyanMurphy - aktualisierte Antwort, um zu zeigen, wie Wert aus der Zeile erhalten und sicher versuchen, den Wert zu analysieren. –

+0

Vielen Dank für Ihre Hilfe Kumpel – RSM

33

Sie können LINQ verwenden, um DataSet/

var rows = dt.AsEnumerable() 
       .Where(r=> r.Field<int>("ID") == 5); 

Datatable Da jede Zeile eine eindeutige ID hat, sollten Sie Single/SingleOrDefault verwenden, welche Ausnahme auslösen würde, wenn Sie wieder mehrere Datensätze erhalten.

DataRow dr = dt.AsEnumerable() 
       .SingleOrDefault(r=> r.Field<int>("ID") == 5); 

(Stellvertreter int für den Typ Ihrer ID-Feld)

+1

Einige Zeit nicht in der Lage, Zeilen aus der Tabelle mit diesem "DataRow [] foundRows = YourDataTable.Select (searchExpression);" auszuwählen. Aber wenn ich LINQ benutze. Es funktioniert gut. Danke Habib. –

+1

Danke! Ich mag LINQ. –

3
DataRow dataRow = dataTable.AsEnumerable().FirstOrDefault(r => Convert.ToInt32(r["ID"]) == 5); 
if (dataRow != null) 
{ 
    // code 
} 

Wenn es eine typisierte DataSet ist:

MyDatasetType.MyDataTableRow dataRow = dataSet.MyDataTable.FirstOrDefault(r => r.ID == 5); 
if (dataRow != null) 
{ 
    // code 
} 
11

Sie mit Methode versuchen können wählen

DataRow[] rows = table.Select("ID = 7"); 
0

versuchen Sie diesen Code

DataRow foundRow = FinalDt.Rows.Find(Value); 

aber bei Leasing einen Primärschlüssel

1

Hallo erstellen nur eine einfache Funktion eingestellt, die unten schaut, als .., dass alle Zeilen zurückgibt, wo der Aufrufparameter eingegeben gültig oder wahr ist.

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(); 
    } 

und rufen Sie es einfach wie unten gezeigt;

DataTable RowsFound=SearchRecords("IdColumn", OriginalTable,5); 

wo 5 ist die ID. Dank ..

4

Ich könnte den folgenden Code verwenden. Danke an alle.

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); 
0

Versuchen Sie unnötige Schleifen zu vermeiden und gehen Sie bei Bedarf dorthin.

string SearchByColumn = "ColumnName=" + value; 
DataRow[] hasRows = currentDataTable.Select(SearchByColumn); 
if (hasRows.Length == 0) 
{ 
    //your logic goes here 
} 
else 
{ 
    //your logic goes here 
} 

Wenn Sie nach einer bestimmten ID suchen möchten, sollte ein Primärschlüssel in einer Tabelle vorhanden sein.

Verwandte Themen