如何在C#中更改数据表中所有列的数据类型

3

我有一个DataTable dt,其所有列都是字符串类型,但其中许多列具有“整数值”,但仅以字符串形式存在。

例如:

ColA

23

34

56

这些也存储在数据表中,但作为字符串值。

我想知道如何创建一个克隆的数据表,其中列具有根据该列内容的有效数据类型。


2
嗨,我看到了那个,但是他们只用了int32,而我要求先获取类型,然后再进行转换。 - user6102644
@PranayDeep 从哪里获取类型? - SᴇM
1
你可能需要测试每个字符串是否可以转换为其他数据类型,然后根据测试结果创建一个表。 - Ian
数据表是如何填充的?您能否在填充之前进行转换,而不是填充后再进行转换? - D Stanley
它正在从一个XML中填充数据。 - user6102644
1个回答

0
在这种情况下,您可以使用 typeof 枚举类型列表并确定其类型。https://msdn.microsoft.com/zh-cn/library/58918ffs.aspx 例如,您可以执行以下操作:
if (obj1.GetType() == typeof(int)){
    // do something with int
}else if (obj1.GetType() == typeof(string)){
    // do something with string
}

否则,如果它不是一个对象而只是一个值,你可以使用is进行比较:
if (myValue is Foo)
    Foo foo = (Foo)myValue;

编辑: 好的,我犯了一个错误。你需要使用tryParse来实现你想要的功能。方法基本相同,你需要循环不同的类型并检查返回值是否解析成功。例如:

int number;

bool result = Int32.TryParse(myString, out number);
if (result)
{
    Console.WriteLine("Converted '{0}' to {1}.", myString, number);         
}

哦,我明白了...之前没理解清楚,抱歉。好的,还有一种类似的解决方案,可以使用tryParse。我会编辑我的上面的答案。 - Iamnino

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接