处理数据集行
本文关键字:数据集 处理 | 更新日期: 2023-09-27 18:03:04
我有一个数据集,我从一个web服务与我填充一个列表视图。到目前为止,我一直是这样做的:
foreach (DataRow row in dsGetAvailUsers.Tables[0].Rows)
{
var item = new User();
item.sUserId = row ["sUserId"].ToString ();
item.UserDesc = row ["UserDesc"].ToString ();
item.UserIMG = row ["UserIMG"].ToString ();
listUsers.Add(item);
}
但这是因为我知道每个字段的名称,因为它是一个具有固定数据和字段名称的列表。
但是现在我得到的列表每项有10个字段,每项有12个字段,等等。我将如何迭代行"动态",然后我如何处理他们在我的自定义适配器(未知字段名称和字段计数)?
这样做
foreach (DataRow row in dsGetAvailUsers.Tables[0].Rows)
{
var item = new User();
for (int j = 0; j < dsGetAvailUsers.Tables[0].Columns.Count; j++)
{
if(dsGetAvailUsers.Tables[0].Columns[j].ColumnName == "sUserId")
item.sUserId = row ["sUserId"].ToString ();
else if(dsGetAvailUsers.Tables[0].Columns[j].ColumnName == "UserDesc")
item.UserDesc= row ["UserDesc"].ToString ();
.....
}
listUsers.Add(item);
}
解决这一切的代码…
foreach (DataRow row in dsGetAvailUsers.Tables[0].Rows)
{
var item = new Dokument();
int i = 0;
item.Label = new Hashtable();
item.array = new Hashtable();
foreach (DataColumn _col in dsGetAvailUsers.Tables[0].Columns)
{
item.Label.Add(i, _col.ColumnName);
item.array.Add(_col.ColumnName,row[i].ToString());
++i;
}
listDokument.Add(item);
RunOnUiThread (() => {DokumentAdapter.Add (item); });
}