2013-01-13 36 views
0

如果相關表被稱爲table1table2,我想要運行loop。目前,我正在做這樣的:根據表。表名

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

是否有這樣的名稱檢查不通過整個數據集必須循環中完成修改這個代碼的方法嗎? 非常感謝。

+0

這讓我想起[介紹的,如果反模式](http://blogs.msdn.com/b/oldnewthing/archive/2011/ 27分之12/ 10251210.aspx)。 – GSerg

回答

0

如何像....

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


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

    foreach (DataRow sourceRow in dataTable.Rows) 
    { 
    } 
} 
+0

我喜歡這個。謝謝! – user1936588

0

使用包含:

if ((table.TableName.Contains("table1"))||(table.TableName.Contains("table2"))) 
{ 
    foreach (DataRow sourceRow in table.Rows) 
    { 
    } 
} 
0

你可以寫

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

它仍然有一個內循環。但會更乾淨。

這樣做沒有循環根本不可能。

1

您可以使用接受表名稱作爲參數的indexers訪問TableName。索引器仍然在內部使用循環。

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

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

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

您可以循環在兩個人的名字(而非遍歷所有表),併爲每個名字,試圖通過名字得到一個表從DtSet.Tables