首页 新闻 会员 周边 捐助

C# 数据类型转换

0
悬赏园豆:30 [已解决问题] 解决于 2013-08-21 13:46

如图

我现在想叠加DataRow的数据  但每一个的数据类型不一样

现在我可以从DataTable获取到单个字段的类型   我如何写成动态的转换数据类型

艾尼路的主页 艾尼路 | 初学一级 | 园豆:116
提问于:2013-08-21 11:31
< >
分享
最佳答案
0

模板。

template<T>

func(datarow src,datarow dest,int index)

{

   src[index]=(T)src[index]+(T)dest[index];

}

收获园豆:20
Launcher | 高人七级 |园豆:45050 | 2013-08-21 11:38

好高级的技术。。。。

以前都没用过

我先试试  谢谢~

艾尼路 | 园豆:116 (初学一级) | 2013-08-21 11:45
其他回答(2)
0

写个函数转换即可。

public object ConvertData(object obj,string dataType)
{
    if(dataType=="Int32")
{
return Convert.ToInt32(obj);    
}else if(dataType=="Double")
{
return Convert.ToDouble(obj);
}
}
    
收获园豆:10
幻天芒 | 园豆:37205 (高人七级) | 2013-08-21 11:41

我现在就在用这个方法    但是数据类型一多就很痛苦了~

总不能把每种类型都写上吧。。。。

而且 返回的是Object类型

不能够直接用“+”运算符

支持(0) 反对(0) 艾尼路 | 园豆:116 (初学一级) | 2013-08-21 11:46

@艾尼路: 系统数据类型就那么点~~~

我一般这样用:

/// <summary>
        ///对象类型转换,转换到值类型
        /// </summary>
        /// <typeparam name="T">要转换的值类型</typeparam>
        /// <param name="obj">要转换的对象</param>
        /// <returns></returns>
        public static T To<T>(this object obj) where T : struct
        {
            return (T)Convert.ChangeType(obj, typeof(T));
        }
支持(0) 反对(0) 幻天芒 | 园豆:37205 (高人七级) | 2013-08-21 11:50

@幻天芒: 你这个方法还是得这么写

dr[j] = (Int32)ConvertData.To<Int32>(dr[j]) + (Int32)ConvertData.To<Int32>(row[j]);

对吧

就达不到我之前的目的

string a=“Int32”;

dr[j] = (a)ConvertData.To<a>(dr[j]) + (a)ConvertData.To<a>(row[j]);

这样就不行了吧。

还是很感谢你~

支持(0) 反对(0) 艾尼路 | 园豆:116 (初学一级) | 2013-08-21 12:12

@艾尼路: 使用时:dr[j].To<Int32>()+row[j].To<Int32>()

看看Emit吧~

支持(0) 反对(0) 幻天芒 | 园豆:37205 (高人七级) | 2013-08-21 13:06

@幻天芒: 

public static class StaticClass
    {
        public static object To(this object obj,string type)
        {
            return Convert.ChangeType(obj,Type.GetType(type));
        }
    }
这样可以传string的type值,但是返回值是object。
支持(1) 反对(0) 幻天芒 | 园豆:37205 (高人七级) | 2013-08-21 13:13

@幻天芒: 最后还是用你的方法成功了

上面那位的方法也是对的

不过你的方法更简单容易理解

我结贴结早了  分给错了不好意思~

希望以后多多指教~

支持(0) 反对(0) 艾尼路 | 园豆:116 (初学一级) | 2013-08-21 13:59

@艾尼路: 要完全用字符串变成类型,估计要Emit了。我和1楼,思想是一样的,都是泛型!

支持(0) 反对(0) 幻天芒 | 园豆:37205 (高人七级) | 2013-08-21 15:31
0

学习了啊。。。

胖多多 | 园豆:12 (初学一级) | 2013-08-21 13:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册