【问题标题】:Depending on table.Tablename取决于 table.Tablename
【发布时间】:2013-01-13 13:03:43
【问题描述】:
如果相关表称为table1 或table2,我想运行loop。目前,我正在这样做:
foreach (DataTable table in DtSet.Tables)
{
if ((table.TableName == "table1")||(table.TableName == "table2"))
{
foreach (DataRow sourceRow in table.Rows)
{
}
}
}
有没有办法修改此代码,以便在无需遍历整个数据集的情况下完成名称检查?
非常感谢。
【问题讨论】:
标签:
c#
for-loop
datatable
dataset
【解决方案1】:
您可以使用接受表名作为参数的indexers 访问TableName。索引器仍然在内部使用循环。
var table1 = dtSet.Tables["table1"];
var table2 = dtSet.Tables["table2"];
if (table1 != null)
{
DoOperation(table1);
}
if (table2 != null)
{
DoOperation(table2);
}
【解决方案2】:
您可以遍历两个名称(而不是遍历所有表),并为每个名称尝试按名称从DtSet.Tables 获取一个表。
【解决方案3】:
像……这样的东西怎么样?
ProcessTableData(DtSet.Tables["table1"]);
ProcessTableData(DtSet.Tables["table2"]);
void ProcessTableData(DataTable dataTable)
{
if (dataTable == null)
return;
foreach (DataRow sourceRow in dataTable.Rows)
{
}
}
【解决方案4】:
你可以写
if ((DtSet.Tables.Contains("table1")
{
foreach (DataRow sourceRow in DtSet.Tables["table1"])
{
}
}
它内部仍然会有一个循环。但会更干净。
完全没有循环是不可能的。
【解决方案5】:
使用包含:
if ((table.TableName.Contains("table1"))||(table.TableName.Contains("table2")))
{
foreach (DataRow sourceRow in table.Rows)
{
}
}