在DataTable中搜索DataType

时间:2015-09-09 09:11:25

标签: c# .net linq datetime datatable

努力寻找任何相关信息。在线这个。不可否认,我并不精通linq表达,这可能是一个障碍。

我目前有一个DataTable列表,想要专门搜索所有DateTime变量,以便将值更改为本地时区。

并非所有表都包含DateTime,相关列也会有所不同。

理想情况下,我需要类似的东西。

String string = "abcdef";
char x[] = string; // string = variable, even if it doesn't change.

(或类似的东西,但逐列)

直到知道我甚至无法访问各个表格元素。一个小的快速表显示了我想要的价值

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

提前致谢!

2 个答案:

答案 0 :(得分: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
                    }
                }
            }
        }

当然,如果表中有很多行,可以通过跟踪临时列表中的列来改进。或者切换行和列循环。

答案 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");
        }
    }