重构我的DataTable搜索代码

时间:2009-02-10 19:21:30

标签: c# search refactoring

我正在使用C#2.0,我不禁认为这不是搜索集合(在本例中为DataTable)获取值的最有效方法:

bool found = false;
foreach (DataRow row in data.Rows)
{
    if (id == row["rowID"])
    {
        found = true;
        break;
    }
}
if (!found)
{
    //Do stuff here
}

有人能想到一种“更清洁”的方法吗?

2 个答案:

答案 0 :(得分:5)

查看数据表的Select()方法:

http://msdn.microsoft.com/en-us/library/b5c0xc84(VS.80).aspx

DataRow[] rows = data.Select("rowID=" + id.ToString());
if (rows.Length > 0)
{
    //Do stuff here
}

答案 1 :(得分:1)

这是线性搜索,它是最慢的实际搜索。

如果您想继续使用DataTable,另一种方法是定义主键并使用Find()方法:

myTable.PrimaryKey = new DataColumn[] { new DataColumn("rowID") };
DataRow row = myTable.Find(id);