从DataSet获取数据基于Caption属性

时间:2014-09-08 10:15:29

标签: c# asp.net-mvc wcf

我正在使用WCF服务来获取另一个数据库的数据。 有一个webmethod GetAnalyst可以返回一个dataSet。

 public  DataSet GetAnalysts()
  {
  }

分析师名单出现在第一个表格中:

List<Analyst> Analysts = new List<Analyst>();
            DataSet ds = null;
            try
            {
                ds = EServiceClient.GetAnalysts();
            }

if (ds != null)
                {
                    foreach (DataRow row in ds.Tables[0].Rows)
                    {
                        var analyst = new Analyst()
                        {
                            Name = row[1].ToString(),
                            LastName = row[2].ToString(),
                            PhoneNumber = row[3].ToString(),
                            Email = row[4].ToString()
                        };
                        sectorService.SetSectorByName(ref analyst, row[0].ToString());
                        Analysts.Add(analyst);
                    }
                }

问题是索引发生了变化,有时名称是第一个,有时候是第2列....

唯一能解决的问题是列的标题。例如,包含名称的列的标题是Name ....

如何根据标题检索属性。

由于

2 个答案:

答案 0 :(得分:0)

您可以使用row["columnname"].ToString()根据实际列名而不是列索引来检索数据。

答案 1 :(得分:0)

我刚刚写了一个方法来根据标题值

获取索引
public virtual int GetIndexByCaption(string caption, DataTable dt)
        {
            int columnIndex = -1;
            try
            {
                foreach (DataColumn column in dt.Columns)
                {
                    if (column.Caption == caption)
                    {
                        columnIndex = dt.Columns.IndexOf(column);
                        break;
                    }
                }
            }
            catch(Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            return columnIndex;
        }