我有一个类需要有一个未知数字类型的变量。我需要在运行时从特定列获取数据类型,然后将类变量转换/实例化为该类型,然后在迭代行时保持该列的运行总计。我想将我的类变量表示为dynamic
,但这并不适合我。我也考虑过使用泛型方法,但我觉得有更好的方法可以做到这一点。通用属性会很棒,但是,你知道这个故事是如何结束的。
更新了,这是我一直在使用的代码的剩余部分:
dynamic dc = dataRow["MyColumnName"];
var tempValue = Convert.ChangeType(dataRow["MyColumnName"], Type.GetType(dc.GetType().ToString()));
total+= (Decimal)tempValue;
答案 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))