处理数据集行

本文关键字:数据集 处理 | 更新日期: 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); });
}