社区
C#
帖子详情
Hashtable转换成datable
yp19910928
2012-05-16 02:14:56
求代码,我已经将数据存到了hashtble中,现在想转换哈。求解。如题。
...全文
204
5
打赏
收藏
Hashtable转换成datable
求代码,我已经将数据存到了hashtble中,现在想转换哈。求解。如题。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
EnForGrass
2012-05-16
打赏
举报
回复
[Quote=引用 4 楼 的回复:]
引用 3 楼 的回复:
引用 2 楼 的回复:
引用 1 楼 的回复:
参考,网上很多http://hi.baidu.com/hkydj/blog/item/7fe93481cd91f1c09023d93f.html
网上搜到的都是hashtable结构固定来转成datatable,问题是hashtable里的键值对是动态数量的怎么办,需要动态生成datatable的列
……
[/Quote]
这个你看一下hashtable的用法吧
yp19910928
2012-05-16
打赏
举报
回复
[Quote=引用 3 楼 的回复:]
引用 2 楼 的回复:
引用 1 楼 的回复:
参考,网上很多http://hi.baidu.com/hkydj/blog/item/7fe93481cd91f1c09023d93f.html
网上搜到的都是hashtable结构固定来转成datatable,问题是hashtable里的键值对是动态数量的怎么办,需要动态生成datatable的列
自己琢磨了一个办法,把ha……
[/Quote]
/// <summary>
///健康信息
/// </summary>
class HealthData
{
private float _data01 = 0f;
private float _data02 = 0f;
private float _data03 = 0f;
private float _data04 = 0f;
private float _data05 = 0f;
private float _data06 = 0f;
/// <summary>
/// 向对象中添加值
/// </summary>
/// <param name="dr">一行中包含数据类型,数据类型名称,采集时间,采集值(hdtype,typename,collecttime,collectdata)</param>
public HealthData(DataRow dr)
{
if (dr["selfchecktypeid"].ToString() == "1")
{
_data01 = float.Parse( dr["collectdata"].ToString());
}
else if (dr["selfchecktypeid"].ToString() == "2")
{
_data02 = float.Parse(dr["collectdata"].ToString());
}
else if (dr["selfchecktypeid"].ToString() == "3")
{
_data03 = float.Parse(dr["collectdata"].ToString());
}
else if (dr["selfchecktypeid"].ToString() == "4")
{
_data04 = float.Parse(dr["collectdata"].ToString());
}
else if (dr["selfchecktypeid"].ToString() == "5")
{
_data05 = float.Parse(dr["collectdata"].ToString());
}
else
{
_data06 = float.Parse(dr["collectdata"].ToString());
}
}
/// <summary>
/// 向对象中添加值并返回该对象
/// </summary>
/// <param name="dr">行</param>
/// <returns></returns>
public HealthData AddData(DataRow dr)
{
if (dr["selfchecktypeid"].ToString() == "1")
{
_data01 = float.Parse(dr["collectdata"].ToString());
}
else if (dr["selfchecktypeid"].ToString() == "2")
{
_data02 = float.Parse(dr["collectdata"].ToString());
}
else if (dr["selfchecktypeid"].ToString() == "3")
{
_data03 = float.Parse(dr["collectdata"].ToString());
}
else if (dr["selfchecktypeid"].ToString() == "4")
{
_data04 = float.Parse(dr["collectdata"].ToString());
}
else if (dr["selfchecktypeid"].ToString() == "5")
{
_data05 = float.Parse(dr["collectdata"].ToString());
}
else
{
_data06 = float.Parse(dr["collectdata"].ToString());
}
return this;
}
public float Data01
{
get { return _data01; }
set { _data01 = value; }
}
public float Data02
{
get { return _data02; }
set { _data02 = value; }
}
public float Data03
{
get { return _data03; }
set { _data03= value; }
}
public float Data04
{
get { return _data04; }
set { _data04 = value; }
}
public float Data05
{
get { return _data05; }
set { _data05 = value; }
}
public float Data06
{
get { return _data06; }
set { _data06 = value; }
}
}
上面是我自己创建的一个对象。
/// <summary>
/// 给Gridview绑定数据源
/// </summary>
/// 创建者:yangpeng 2012-5-10
public void SetDataToGridview()
{
try
{
string Account="";
CIM.COMM.MyCookie mycook = new CIM.COMM.MyCookie(CIM.COMM.CIMCookieNames.CIM_Care);
if (mycook != null)
{
Account = mycook.GetCookieValue("UserId");
}
DataSet ds=CIM.BLL.T_SELFCHECK.GetData(Account);
DataTable dt_data = ds.Tables[0];
Hashtable ht_data = new Hashtable();
for (int i = 0; i < dt_data.Rows.Count; i++)
{
string ctime = dt_data.Rows[i]["collecttime"].ToString();
if (ht_data.ContainsKey(ctime))
{
HealthData hd = (HealthData)ht_data[ctime];
hd.AddData(dt_data.Rows[i]);
ht_data.Remove(ctime);
ht_data.Add(ctime,hd);
}
else
{
HealthData hd = new HealthData(dt_data.Rows[i]);
ht_data.Add(ctime,hd);
}
}
DataTable dtTmp = new DataTable();
foreach (DictionaryEntry de in ht_data)
{
string p = de.value.toString();//这得到的不是值啊。
string q = de.Key.ToString();
}
}
catch (Exception ex)
{
Logger.Error("HelthInfo_Today_HealthInfo:SetDataToGridview " + ex.Message);
}
}
我怎样根据hashtable里面的key去找出它下面的N个value值。上面循环出来的value是个对象,怎么得到对象里面的值呢。
EnForGrass
2012-05-16
打赏
举报
回复
[Quote=引用 2 楼 的回复:]
引用 1 楼 的回复:
参考,网上很多http://hi.baidu.com/hkydj/blog/item/7fe93481cd91f1c09023d93f.html
网上搜到的都是hashtable结构固定来转成datatable,问题是hashtable里的键值对是动态数量的怎么办,需要动态生成datatable的列
自己琢磨了一个办法,把hashtable的键值对循环……
[/Quote]
if (de.Key.ToString().ToLower() == "showprice" || de.Key.ToString().ToLower() == "costmoney" || de.Key.ToString().IndexOf("201")>=0)//判断是不是hashtable中的键值是不是showprice、costmoney其中一个,或者键值中是否存在201
dtTmp.Columns.Add(de.Key.ToString(),typeof(decimal));//DataTable添加一列(就是hashtable的键,数据类型是decimal)
else if (de.Key.ToString().ToLower() == "minschedulestarttime" || de.Key.ToString().ToLower() == "maxscheduleendtime")
其实这个判断你不用管,主要是 dtTmp.Columns.Add(de.Key.ToString(),typeof(decimal));这句话
yp19910928
2012-05-16
打赏
举报
回复
[Quote=引用 1 楼 的回复:]
参考,网上很多http://hi.baidu.com/hkydj/blog/item/7fe93481cd91f1c09023d93f.html
[/Quote]
网上搜到的都是hashtable结构固定来转成datatable,问题是hashtable里的键值对是动态数量的怎么办,需要动态生成datatable的列
自己琢磨了一个办法,把hashtable的键值对循环加在datatable的第0行,第n列。
Hashtable result = resultList[i] as Hashtable;
DataTable dtTmp = new DataTable();
foreach (DictionaryEntry de in result)
{
if (de.Key.ToString().ToLower() == "showprice" || de.Key.ToString().ToLower() == "costmoney" || de.Key.ToString().IndexOf("201")>=0)
dtTmp.Columns.Add(de.Key.ToString(),typeof(decimal));
else if (de.Key.ToString().ToLower() == "minschedulestarttime" || de.Key.ToString().ToLower() == "maxscheduleendtime")
dtTmp.Columns.Add(de.Key.ToString(),typeof(DateTime));
else
dtTmp.Columns.Add(de.Key.ToString());
if (dtTmp.Rows.Count <= 0)
{
dtTmp.Rows.Add(de.Value);
}
else
{
if (de.Value == null)
dtTmp.Rows[0][de.Key.ToString()] = DBNull.Value;
else
dtTmp.Rows[0][de.Key.ToString()] = de.Value;
}
}
dt.Merge(dtTmp);
能否解释下
if (de.Key.ToString().ToLower() == "showprice" || de.Key.ToString().ToLower() == "costmoney" || de.Key.ToString().IndexOf("201")>=0)
dtTmp.Columns.Add(de.Key.ToString(),typeof(decimal));
else if (de.Key.ToString().ToLower() == "minschedulestarttime" || de.Key.ToString().ToLower() == "maxscheduleendtime")
EnForGrass
2012-05-16
打赏
举报
回复
参考,网上很多
http://hi.baidu.com/hkydj/blog/item/7fe93481cd91f1c09023d93f.html
C#实现将json转换为
Data
Ta
ble
的方法
主要介绍了C#实现将json转换为
Data
Ta
ble
的方法,涉及C#操作json及
Data
Ta
ble
的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
C#
HashTa
ble
转换为
Data
Ta
ble
互转
Data
Ta
ble
转换为
HashTa
ble
#region
HashTa
ble
转换为
Data
Ta
ble
//======================================================================== // 方法名称
HashTa
ble
To
Data
Ta
ble
/// <summary> /// HashTab...
将List<
HashTa
ble
>转为
Data
Ta
ble
public static
Data
Ta
ble
Convert2
Data
Ta
ble
(List list) {
Data
Ta
ble
dt = new
Data
Ta
ble
(); if (list.Count == 0) return dt; foreach (string name in list[0]
(转载)C# 的
Hashta
ble
和Dictionary比较
1、Dictionary是顺序存储,
Hashta
ble
则不是。比较明显的对比就是使用foreach,Dictionary是按照Add的顺序排列的,
Hashta
ble
则是无序的。2、单线程程序中推荐使用 Dictionary, 有泛型优势, 且读取速度较快, 容量利用更充分.3、在单线程的时候使用Dictionary更好一些,多线程的时候使用
HashTa
ble
更好。多线程程序中推荐使用 Hashtab
string转为guid类型_string类型的Guid码怎么
转换成
Guid码(
Data
ble
转成泛型IList)
我数据库中存的是string类型的 在实体中时Guid类型的下面是
转换成
泛型时遇到的问题 的代码:PropertyInfo[] properties = typeof(CommedityClassesEntity).GetProperties();//获取实体类型的属性集合
Hashta
ble
hh = GetColumnType(dt.Columns);//属性名称和类型名的键值对集合IList...
C#
111,126
社区成员
642,541
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章