web-dev-qa-db-ja.com

特定のIDを持つデータテーブル内の行を見つける

データテーブルに2つの列があります。

ID, Calls. 

Callsの値がwhere ID = 5であるかどうかを確認するにはどうすればよいですか?

5は任意の数で、たとえば単なる例です。各行には一意のIDがあります。

34
RSM

次のように、検索する文字列条件を作成します。

string searchExpression = "ID = 5"

次に、次のように、DataTableオブジェクトの.Select()メソッドを使用します。

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

これで、次のように結果をループできます。

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

    }
}
58
Karl Anderson

LINQ to DataSet/DataTableを使用できます

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

各行には一意のIDがあるため、複数のレコードを取得した場合に例外をスローするSingle/SingleOrDefaultを使用する必要があります。

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

(IDフィールドのタイプをintに置き換えてください)

40
Habib

メソッド選択で試すことができます

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

次のコードを使用できます。みんな、ありがとう。

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);
7
Kamil KIZILTAŞ
DataRow dataRow = dataTable.AsEnumerable().FirstOrDefault(r => Convert.ToInt32(r["ID"]) == 5);
if (dataRow != null)
{
    // code
}

型付きデータセットの場合:

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

このコードを試してください

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

ただし、少なくとも1つの主キーを設定します

2
Tanmay Nehete

こんにちは、次のように見える単純な関数を作成します。入力された呼び出しパラメーターが有効またはtrueであるすべての行を返します。

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

以下に示すように単純に呼び出します。

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

ここで、5はIDです。ありがとう。

1
Sunday Efeh

不要なループを避けて、必要に応じてこれに進みます。

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

特定のIDで検索する場合は、テーブルに主キーが必要です。

0
Mohd Sadiq