如何在c#中更改数据表中所有列的数据类型[重复]
Posted
技术标签:
【中文标题】如何在c#中更改数据表中所有列的数据类型[重复]【英文标题】:How to change datatype of all the columns in datatable in c# [duplicate] 【发布时间】:2016-09-08 07:33:35 【问题描述】:我有一个 DataTable dt,它的所有列都是字符串类型,但其中许多列中都有“整数值”,但仅作为字符串。
例如:-
ColA
23
34
56
这些也存储在数据表中,但作为字符串值。
我想知道如何根据该列的内容使用具有有效数据类型的列来克隆我的数据表。
【问题讨论】:
嗨,我已经看到了,但他们只用 int32 完成了它,我要求先获取类型,然后进行相应的转换。 @PranayDeep 从什么获取类型? 您可能需要测试每个字符串是否可以转换为其他数据类型,然后根据测试结果创建表格 数据表是如何填充的?您可以在那里进行转换而不是填充 then 转换吗? 它是从 xml 填充的。 【参考方案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
仍然有类似的解决方案。我将在上面编辑我的答案。以上是关于如何在c#中更改数据表中所有列的数据类型[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 C# 中获取 dataGridView 中所有 Combobox 列的显示成员?
如何获取和比较pyspark中两个数据框中相似列的所有值的数据类型