在具有特定id的数据表中查找行

RSM*_*RSM 34 c# datatable datarow

我在数据表中有两列:

ID, Calls. 
Run Code Online (Sandbox Code Playgroud)

我怎样才能找到Calls的价值where ID = 5?

5可以是任何数字,例如它.每行都有一个唯一的ID.

Kar*_*son 58

创建一个字符串条件来搜索,如下所示:

string searchExpression = "ID = 5"
Run Code Online (Sandbox Code Playgroud)

然后使用对象的.Select()方法DataTable,如下所示:

DataRow[] foundRows = YourDataTable.Select(searchExpression);
Run Code Online (Sandbox Code Playgroud)

现在你可以遍历结果,如下所示:

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

    }
}
Run Code Online (Sandbox Code Playgroud)


Hab*_*bib 41

您可以使用LINQ to DataSet/DataTable

var rows = dt.AsEnumerable()
               .Where(r=> r.Field<int>("ID") == 5);
Run Code Online (Sandbox Code Playgroud)

由于每一行都有一个唯一的ID,Single/SingleOrDefault因此如果您获得多个记录,则应该使用哪个会抛出异常.

DataRow dr = dt.AsEnumerable()
               .SingleOrDefault(r=> r.Field<int>("ID") == 5);
Run Code Online (Sandbox Code Playgroud)

(替换int您的ID字段的类型)


小智 11

您可以尝试使用方法选择

DataRow[] rows = table.Select("ID = 7");
Run Code Online (Sandbox Code Playgroud)


小智 7

我可以使用以下代码.感谢大家.

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);
Run Code Online (Sandbox Code Playgroud)


va.*_*va. 5

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

如果它是类型化的 DataSet:

MyDatasetType.MyDataTableRow dataRow = dataSet.MyDataTable.FirstOrDefault(r => r.ID == 5);
if (dataRow != null)
{
    // code
}
Run Code Online (Sandbox Code Playgroud)