【问题标题】:How to change datatype of all the columns in datatable in c# [duplicate]如何在c#中更改数据表中所有列的数据类型[重复]
【发布时间】:2016-09-08 07:33:35
【问题描述】:

我有一个 DataTable dt,它的所有列都是字符串类型,但其中许多列中都有“整数值”,但仅作为字符串。

例如:-

ColA

23

34

56

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

我想知道如何根据该列的内容使用具有有效数据类型的列来克隆我的数据表。

【问题讨论】:

  • 嗨,我已经看到了,但他们只用 int32 完成了它,我要求先获取类型,然后进行相应的转换。
  • @PranayDeep 从什么获取类型?
  • 您可能需要测试每个字符串是否可以转换为其他数据类型,然后根据测试结果创建表格
  • 数据表是如何填充的?您可以在那里进行转换而不是填充 then 转换吗?
  • 它是从 xml 填充的。

标签: c# .net c#-4.0 c#-datatable


【解决方案1】:

在这种情况下,您可以使用typeof 枚举类型列表并确定它是什么类型。 https://msdn.microsoft.com/en-us/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 仍然有类似的解决方案。我将在上面编辑我的答案。
猜你喜欢
  • 2014-01-20
  • 2012-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-20
  • 2021-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多