3

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

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

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

3 回答 3

3

这对我有用

if (dtRow.Table.Columns["Date"].DataType == typeof(System.DateTime))
于 2016-06-23T07:41:08.087 回答
2

这是根据行项类型检查表中的数据行项是否包含 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
于 2014-07-04T10:37:34.310 回答
1

我最终像这样解决它:

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

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

于 2012-11-01T14:53:41.997 回答