Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 取决于表。表名_C#_For Loop_Datatable_Dataset - Fatal编程技术网

C# 取决于表。表名

C# 取决于表。表名,c#,for-loop,datatable,dataset,C#,For Loop,Datatable,Dataset,如果相关表被称为table1或table2,我想运行循环。目前,我是这样做的: foreach (DataTable table in DtSet.Tables) { if ((table.TableName == "table1")||(table.TableName == "table2")) { foreach (DataRow sourceRow in table.Rows) { } } } 有没有一种方法可以修改

如果相关表被称为
table1
table2
,我想运行
循环。目前,我是这样做的:

foreach (DataTable table in DtSet.Tables)
{
    if ((table.TableName == "table1")||(table.TableName == "table2"))
    {
        foreach (DataRow sourceRow in table.Rows)
        {
        }
    }
}
有没有一种方法可以修改此代码,以便在不必循环整个数据集的情况下完成名称检查? 非常感谢。

使用包含:

  if ((table.TableName.Contains("table1"))||(table.TableName.Contains("table2"))) 
{
    foreach (DataRow sourceRow in table.Rows) 
    {
    }
}
你可以写

if ((DtSet.Tables.Contains("table1")
{
    foreach (DataRow sourceRow in DtSet.Tables["table1"])
    {
    }
}
它内部仍将有一个循环。但是会更干净


完全不使用循环是不可能的。

您可以使用accept table name作为参数访问
TableName
。索引器仍然在内部使用循环

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

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

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

您可以循环两个名称(而不是循环所有表),对于每个名称,请尝试按名称从
DtSet.tables
获取一个表。

类似于

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


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

    foreach (DataRow sourceRow in dataTable.Rows)
    {
    }
}
这提醒了我。