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

时间:2013-12-17 15:38:33

标签: c# datatable datarow

我在数据表中有两列:

ID, Calls. 

如何找到通话的值where ID = 5

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

8 个答案:

答案 0 :(得分:56)

制作字符串条件以进行搜索,如下所示:

string searchExpression = "ID = 5"

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

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

    }
}

答案 1 :(得分:39)

您可以使用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);

(将[{1}}替换为您的ID字段类型)

答案 2 :(得分:11)

您可以尝试使用方法选择

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

答案 3 :(得分: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);

答案 4 :(得分:3)

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
}

答案 5 :(得分:2)

试试这段代码

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

但设置为租约一个主键

答案 6 :(得分:1)

您好,只需创建一个如下所示的简单函数。它返回调用参数输入的所有行有效或为真。

 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。 谢谢..

答案 7 :(得分:0)

尝试避免不必要的循环,并在需要时进行此操作。

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

如果您想按特定ID进行搜索,那么表格中应该有一个主键。