直接用tostring然后再convert这个就不用说了,
我现在在用反射的方法把数据转出来,如
fldInfo.SetValue(o, dr[fldInfo.Name]);
其中fldInfo是FiledInfo对象,dr是DataRow对象,fldInfo.Name是字段名称,
现在这样直接转会引发异常,因为number转过来是decimal,数据字段的长度是19,如何能让它直接转为int64或int32

解决方案 »

  1.   

    啥叫直接转?
    fieldInfo.SetValue(o, Convert.ToInt32(dataRow[fieldInfo.Name]));可否?
    using System;
    using System.Data;
    using System.Reflection;namespace ConsoleApplication7 {
        class Program {
            static void Main(string[] args) {
                DataTable dt = new DataTable();
                dt.Columns.Add("TestField",typeof(decimal));
                dt.Rows.Add(10);
                dt.Rows.Add(20.1);
                FieldInfo fieldInfo = typeof (TestClass).GetField("TestField");
                foreach (DataRow dataRow in dt.Rows) {
                    TestClass o = new TestClass();
                    fieldInfo.SetValue(o, Convert.ToInt32(dataRow[fieldInfo.Name]));
                    Console.WriteLine(o.TestField);
                }            Console.ReadLine();
            }
        }    public class TestClass {
            public int TestField;
        }
    }
      

  2.   

    FiledInfo.SetValue(o, Convert.ChangeType(dr[fldInfo.Name], _FieldInfo.FieldType));这样看看。.