2017-08-09 51 views
0
public void Method1() 
{ 
    Datatable dt1 = new DataTable(); 
    Datatable dt2 = new DataTable(); 
    Datatable dt3 = new DataTable(); 

if (ds.Tables.Count > 0) 
{  
     if (ds.Tables[0].Rows.Count > 0) 
      dt1 = ds.Tables[0]; 
     if (ds.Tables[1].Rows.Count > 0) 
       dt2 = ds.Tables[1]; 
      if (ds.Tables[2].Rows.Count > 0) 
       dt3 = ds.Tables[2];    
} 
} 

在上面的代碼是沒有更好的方法來檢查的數據集表「DS」的確切人數,每當DS有三個表沒有問題,但如果它有一個表,它會在第二個條件失敗並拋出異常時找不到Table1。檢查表是否存在的任何指針。的數據來檢查數據表高效的方式設置

謝謝。

+0

您需要使用循環遍歷數據集中的所有表。你想能夠使用不同的變量,如dt1,dt2等。 –

+0

@ChetanRanpariya在上面的代碼中,您可以看到使用不同的變量。你能分享一個樣本嗎? – Agasthya

+0

如果你想使用不同的變量,那麼解決方案將是骯髒的。你能解釋一下你需要這種代碼的用例,那麼你可以提供適合的解決方案,你不需要使用不同的變量,仍然可以實現你的目標。 –

回答

1

有幾種方法可以做到這一點。例如,你可以做到以下幾點,如果你仍然要三個DataTable對象:

public void Method1() 
{ 
    DataTable dt1 = ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0 ? ds.Tables[0] : new DataTable(); 
    DataTable dt2 = ds.Tables.Count > 1 && ds.Tables[1].Rows.Count > 0 ? ds.Tables[1] : new DataTable(); 
    DataTable dt3 = ds.Tables.Count > 2 && ds.Tables[2].Rows.Count > 0 ? ds.Tables[2] : new DataTable(); 
} 

更動態的方式將所有的表存儲在像這樣的列表:

public void Method1() 
{ 
    List<DataTable> dataTables = new List<DataTable>(); 

    foreach (DataTable dataTable in ds.Tables) 
    { 
     if (dataTable.Rows.Count > 0) dataTables.Add(dataTable); 
    } 

} 

或使用LINQ

public void Method2() 
{ 
    List<DataTable> dataTables = ds.Tables.Cast<DataTable>().Where(dataTable => dataTable.Rows.Count > 0).ToList(); 
}