获取Datarow [mycolumn]的数据类型,并将另一个变量施加为该类型



我有一个需要具有未知数字类型的变量的类。我需要在运行时从特定的列中获取数据类型,然后将类变量铸造/实例化为该类型,然后在我迭代行时保持该列的运行总计。我考虑过将我的类变量表示为dynamic,但这并不适合我。我还考虑过使用通用方法,但同样,我觉得有一种更好的方法可以做到这一点。通用财产将很棒,但是,好吧,您知道这个故事是如何结束的。

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

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

这对我有用

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

以下解决方案是检查表中的数据行项目是否包含行项目类型

的基础上的空值
       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

我最终以这样的求解:

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

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