获取DataRow [myColumn]的数据类型并将另一个变量转换为该类型

时间:2012-10-30 22:51:22

标签: c#-4.0

我有一个类需要有一个未知数字类型的变量。我需要在运行时从特定列获取数据类型,然后将类变量转换/实例化为该类型,然后在迭代行时保持该列的运行总计。我想将我的类变量表示为dynamic,但这并不适合我。我也考虑过使用泛型方法,但我觉得有更好的方法可以做到这一点。通用属性会很棒,但是,你知道这个故事是如何结束的。

更新了,这是我一直在使用的代码的剩余部分:

dynamic dc = dataRow["MyColumnName"];
var tempValue = Convert.ChangeType(dataRow["MyColumnName"], Type.GetType(dc.GetType().ToString())); 
total+= (Decimal)tempValue;

3 个答案:

答案 0 :(得分:1)

我最终解决了这个问题:

public int MyMethod<T>(DataTable myDataTable)
{
    dynamic myTempVariable = default(T);
    ...
}

这不是一个完美的解决方案(我不想在调用方法之前知道列数据类型),但这给了我在方法中所需的灵活性。

答案 1 :(得分:1)

这是解决方案,检查表中的数据行项是否包含基于行项类型的Null值

       Dim ds as New DataSet = MYData()
       Dim rowindex As Integer = 0
       For Each row As DataRow In ds.Tables(0).Rows
         For index As Integer = 0 To row.ItemArray.Length - 1
             If (TypeOf row(index) Is DBNull) And (IsDBNull(row(index))) Then
                ds.Tables(0).Rows(rowindex)(index) = 0
             End If
         Next
         rowindex = rowindex + 1
        Next

答案 2 :(得分:1)

这对我有用

if (dtRow.Table.Columns["Date"].DataType == typeof(System.DateTime))