0

loop如果相关表被调用,我想运行table1or table2。目前,我正在这样做:

foreach (DataTable table in DtSet.Tables)
{
    if ((table.TableName == "table1")||(table.TableName == "table2"))
    {
        foreach (DataRow sourceRow in table.Rows)
        {
        }
    }
}

有没有办法修改此代码,以便在不必遍历整个数据集的情况下完成名称检查?非常感谢。

4

5 回答 5

1

您可以访问接受表名作为参数的TableName使用索引器。索引器仍然在内部使用循环。

var table1 = dtSet.Tables["table1"];
var table2 = dtSet.Tables["table2"];

if (table1 != null)
{
    DoOperation(table1);
}

if (table2 != null)
{
    DoOperation(table2);
}
于 2013-01-13T13:09:11.263 回答
1

您可以遍历两个名称(而不是遍历所有表),并且对于每个名称,尝试DtSet.Tables按名称获取表。

于 2013-01-13T13:11:52.387 回答
0

使用包含:

  if ((table.TableName.Contains("table1"))||(table.TableName.Contains("table2"))) 
{
    foreach (DataRow sourceRow in table.Rows) 
    {
    }
}
于 2013-01-13T13:08:15.630 回答
0

你可以写

if ((DtSet.Tables.Contains("table1")
{
    foreach (DataRow sourceRow in DtSet.Tables["table1"])
    {
    }
}

它内部仍然会有一个循环。但会更干净。

完全没有循环是不可能的。

于 2013-01-13T13:08:51.760 回答
0

诸如此类的东西怎么样......

ProcessTableData(DtSet.Tables["table1"]);
ProcessTableData(DtSet.Tables["table2"]);    


void ProcessTableData(DataTable dataTable)
{
    if (dataTable == null)
        return;

    foreach (DataRow sourceRow in dataTable.Rows)
    {
    }
}
于 2013-01-13T13:20:57.867 回答