假设已知DataSet如下:有两列,ID和User,ID类型是int,User类型是string
ds = new DataSet("UserDataSet");
DataTable dt = new DataTable("UerTable");
dt.Columns.Add("User",typeof(System.String));
dt.Columns.Add("ID",typeof(System.Int32));
DataRow row = dt.NewRow();
row["User"]="a";
row["ID"]=1;
dt.Rows.Add(row);
row = dt.NewRow();
row["User"]="b";
row["ID"]=2;
dt.Rows.Add(row);
ds.Tables.Add(dt);要求生成的object[]有两个property,int ID和string User,或者filed成员都行。
C#可以实现吗?
求助高手
ds = new DataSet("UserDataSet");
DataTable dt = new DataTable("UerTable");
dt.Columns.Add("User",typeof(System.String));
dt.Columns.Add("ID",typeof(System.Int32));
DataRow row = dt.NewRow();
row["User"]="a";
row["ID"]=1;
dt.Rows.Add(row);
row = dt.NewRow();
row["User"]="b";
row["ID"]=2;
dt.Rows.Add(row);
ds.Tables.Add(dt);要求生成的object[]有两个property,int ID和string User,或者filed成员都行。
C#可以实现吗?
求助高手
解决方案 »
- sql中查询第31到第40行之间的数据
- 怎样改变ListViewItem的大小?
- 新人求助Socket..Accept()
- 急!!!command.ExecuteScalar()的问题
- U盘插入自动打开网页并传递用户名密码登录 拨出网页自动关闭
- 通过对象生成表,现在有这方面的工具吗?如果没有,我准备自己写一个.
- 如何把winform C#中窗体保存成BMP文件呢?
- 关于用installshiledR X Express version10.0打包C#工程的两个问题.在线等候大家的帮忙
- 如何处理“取消”按扭事件?
- 新手求解...
- 救救我啊,怎么在IE客户端没有权限写服务器端XML文件呢????
- P2P新论:查了一下关于P2P的帖子,大多都是关于内网与内网通讯的问题,这个结论都是一致的,要通过服务器获得要通讯方的IP信息,我的问题
所以想传数组,减少DataSet中的数据量。
DataSet有很多列的,个人觉得Hashtable不能实现,谢谢回应
或者你准备做O/R Mapping?
那和object[]有什么关系
因为DataSet的列内容是可变的,所以想每次用反射机理新建object存储。
我先看看.ItemArray,谢谢
可实现吗?
想从DataRow返回一个什么样的对象?在.NET里,任何对象都相应的特定类的, 你的意思是要动态地产生新类么?
的确想动态生成类。
想法是奇怪了点。
如果对每种DataSet建立一种类,返回该类的数组已经实现。但为了通用性吖。
记录不会太大的,但DataSet在Web Services的确效率不好,而且pocket pc的支持也不好,
模拟器老是出这样那样的exception
如ppc 2003 Emulator出platformnotsupportedexception
ppc 2003 se又不支持ip访问web Services
怕到时出问题吖
最有生成的object[]里面应该有2个object
每个object有string User 和int ID两个成员或属性。
名称和列名一样,赋值就和列值一样。可以吗?谢谢。昨晚睡了,没及时回答
int x=ds.Tables[0].Rows.Count;
int y=ds.Tables[0].Columns.Count;
//object[,] myArr=new Object[x,y];
object[][] myArr=new object[x][];
for(x=0;x<ds.Tables[0].Rows.Count;x++)
{
myArr[x]=new object[y];
for(y=0;y<ds.Tables[0].Columns.Count;y++)
{
myArr[x][y]=ds.Tables[0].Rows[x][y];
}
}
//MessageBox.Show(myArr.Length.ToString());
//MessageBox.Show(myArr[0].Length.ToString());这里得到的是一个二维数组,要是想得到一维数组的话,就要自己写一个类了。因为
o你想要的类既要能容纳所有数据类型,而又必须一个对象里面有多个成员。那就从object派生一个类出来吧,这个类里面有多个object成员。类写完后,照上面的代码改成一维数组就是你要的了。不过,我觉得这样并不能提高性能吧。通常提高WebService传输效率都是序列化,有必要的话还可以压缩到达目的地后再解压缩。
public class SimpleObject
{
public string Name;
public Object Value; //int Value;
}then, just do a conversion on datarow
DataRow dr = .....;SimpleObject [] so = new SimpleObject [dr.Table.Columns.Count];
for(int i=0; i < so.Length ;i++)
{
so[i] = new SimpleObject();
so[i].Name = dr.Table.Columns[i].ColumnName;
so[i].Value = dr[dr.Table.Columns[i]];
}....
看来我得放弃了,呵呵。
谢谢各位