2015-09-09 44 views
0

努力尋找任何相關信息。在線爲這一個。無可否認,我對linq表達式並不熟悉,這可能是一個障礙。在數據表中搜索數據類型

我目前有一個DataTables的列表,並希望搜索所有它們專門爲任何DateTime變量存在,以便將值更改爲本地時區。

並非所有的表格都會包含日期時間,並且相關的列會有所不同。

理想情況下,我需要類似的東西。

Foreach table in resultTables 
    Foreach row in table.rows 
     if row contains dataType(DateTime) then [change value] 

(或由列類似的東西,但不是列)

直到知道我還沒有能夠連訪問單個表元素。有點quickwatch顯示我正在尋找的價值在

((System.Data.DataRow)((new System.Linq.SystemCore_EnumerableDebugView(table.Rows)).Items[0])).ItemArray[1] 

在此先感謝!

回答

0

試試這個:

var dateColumns = dt.Columns.Cast<DataColumn>().Where(x => x.DataType == typeof(DateTime)); 
    foreach (DataColumn column in dateColumns) 
    { 
     foreach (DataRow row in dt.Rows) 
     { 
      row[column.ColumnName] = DateTime.Parse("1/1/4"); 
     } 
    } 
0

快速和骯髒的版本,我會去這樣的事情:

 foreach (DataTable table in resultTables) { 
      foreach (DataRow row in table.Rows) { 
       foreach (DataColumn col in table.Columns) { 
        if (col.DataType == typeof (DateTime)) { 
         row[col] = // do something 
        } 
       } 
      } 
     } 

當然,如果你在一個表中有很多行,您可以通過跟蹤發現,在列的提高一個臨時名單。或者切換行和列循環。