webentwicklung-frage-antwort-db.com.de

Zeile in Datentabelle mit spezifischer ID finden

Ich habe zwei Spalten in einer Datentabelle:

ID, Calls. 

Wie finde ich heraus, was der Wert von Calls where ID = 5 ist?

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

33
RSM

Legen Sie ein String-Kriterium für die Suche fest

string searchExpression = "ID = 5"

Verwenden Sie dann die .Select()-Methode des DataTable-Objekts wie folgt:

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

Jetzt können Sie die Ergebnisse wie folgt durchlaufen:

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

    }
}
56
Karl Anderson

Sie können LINQ to DataSet/DataTable verwenden

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

Da jede Zeile eine eindeutige ID hat, sollten Sie Single/SingleOrDefault verwenden. Dies würde eine Ausnahme auslösen, wenn Sie mehrere Datensätze zurückerhalten. 

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

(Ersetzen Sie int für den Typ Ihres ID-Felds)

37
Habib

Sie können es mit method select versuchen

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

Ich könnte den folgenden Code verwenden. Vielen Dank 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);
6
Kamil KIZILTAŞ
DataRow dataRow = dataTable.AsEnumerable().FirstOrDefault(r => Convert.ToInt32(r["ID"]) == 5);
if (dataRow != null)
{
    // code
}

Wenn es sich um ein typisiertes DataSet handelt:

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

versuchen Sie diesen Code

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

legen Sie jedoch mindestens einen Primärschlüssel fest

2
Tanmay Nehete

Hallo, erstellen Sie einfach eine einfache Funktion, die wie folgt aussieht. Das gibt alle Zeilen zurück, in denen der eingegebene Aufrufparameter 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 nennen Sie es einfach wie unten gezeigt;

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

wo 5 ist die ID . Danke .. 

1
Sunday Efeh

Vermeiden Sie unnötige Schleifen und versuchen Sie es gegebenenfalls.

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 eine Tabelle einen Primärschlüssel enthalten.

0
Mohd Sadiq