请问C#.net如何更改dataTable的数据类型?

将数据赋值到DataTable之后,那些数据都是已经按照数据库中的数据类型设定好的了。其中有一个数字字段,但是要根据程序重新赋值一些字符串进去这个字段,请问要怎么做呢?例... 将数据赋值到DataTable之后,那些数据都是已经按照数据库中的数据类型设定好的了。
其中有一个数字字段,但是要根据程序重新赋值一些字符串进去这个字段,请问要怎么做呢?
例如是一个字段是要显示年龄的
我希望在赋值给DataTable之后判断一下年龄是否大于150,如果大于150的时候就给这个字段赋值给“错误”,这样就可以直接使用GridView来显示,UI层就不需要涉及到业务了
展开
 我来答
百度网友6ca0ba3
推荐于2016-10-26 · TA获得超过1489个赞
知道小有建树答主
回答量:360
采纳率:0%
帮助的人:572万
展开全部
请问楼主DataTable是你赋值的,不是从数据库读的吗?
那赋值的时候就可以检查值,如果大于150,赋值“错误”;

dt.Columns[年龄的索引].DataType = typeof(String);

可是其他年龄仍然是int 型啊。
这里我就不继续研究了。

因为我认为你的这个思路有问题,UI层完全不涉及到业务,以致使逻辑层需要做大量的工作来服务。

在GridView中,判断年龄再显示是很容易的,消耗的资源也比更改DataTable的Column的类型要多。

如果你是想这个DataTable重用很多次的话,那写个存储过程吧,在SQL里面判断年龄,再输出。

//参考SQL语句,手写,有错误谅解
select username,usersex,user...,case
when userage>150
then '错误'
else userage
end
as
'userage'
from
table

希望楼主解决问题。
如是我之闻
2009-12-02 · TA获得超过1237个赞
知道小有建树答主
回答量:1207
采纳率:57%
帮助的人:813万
展开全部
其实你在DataTable中加数据时间,判断一下就可以,因为DataTable中的所有数据默认是Object类型。
你只要:
DataRow dr=DataTable.NewRow.
if (dr["列名"]>150)
{}
else
{}就可以
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
温娅辟碧白
2019-08-25 · TA获得超过3556个赞
知道大有可为答主
回答量:3032
采纳率:33%
帮助的人:194万
展开全部
Select
ID,Name,State,StateValue
case
when
state=1
then
'是'
end
as
'否'
from
TableName
如果你要改State的值,就要改State这一列的
DataType.
方法如下:(我没测试,你试试行不行吧)
DataTable
dt=new
DataTable();
dt.Columns[2].DataType=Type.GetType("System.Char");
foreach
(DataRow
dr
in
dt.Rows)
{
dr[2]
=
(int)dr[2]
==
1
?
'是'
:
'否';
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
九冠076
2009-12-02 · TA获得超过995个赞
知道小有建树答主
回答量:669
采纳率:0%
帮助的人:619万
展开全部
luoxk11正解。。。
也可以 Select Convert(varchar(20),age) From 表 然后程序中判断
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dopsop
2009-12-02 · TA获得超过252个赞
知道小有建树答主
回答量:434
采纳率:0%
帮助的人:234万
展开全部
1楼正解
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式