2011-09-02 174 views
5

我有下面的方法返回数据集。我正在使用.NET 2.0从DataSet获取值到一个变量

DataSet ds = GetAllRecords(); 

我想从每个列中获取特定行的值并将其绑定到变量。 如何才能实现这一目标?

当前该方法返回表中的所有行,我必须根据ID找到该特定的行。

但是,如果这是不可能的,我可以跟

DataSet ds = GetSpecificRecord(id); 

但我仍然需要从每一列获取值,并将其绑定变量。 请指教。

+0

检查DataTable.Select方法@ HTTP:// MSDN。 microsoft.com/en-us/library/det4aw50.aspx。在你的表中,它将是'ds.Tables [0] .Select(“”);' – Chandu

回答

4
// Create a table 
DataTable table = new DataTable("users"); 
table.Columns.Add(new DataColumn("Id", typeof(int))); 
table.Columns.Add(new DataColumn("Name", typeof(string))); 

table.Rows.Add(1, "abc"); 
table.Rows.Add(2, "ddd"); 
table.Rows.Add(3, "fff"); 
table.Rows.Add(4, "hhh d"); 
table.Rows.Add(5, "hkf ds"); 

// Search for given id e.g here 1 

DataRow[] result = table.Select("Id = 1"); // this will return one row for above data 
foreach (DataRow row in result) 
{ 
    Console.WriteLine("{0}, {1}", row[0], row[1]); 
} 
0

你可以用LINQ来做到这一点。

DataRow resultRow = ds.Tables["SomeTable"].AsEnumerable().Where(row => row.Field<int>("SomeID") == 1).FirstOrDefault(); 

对于.NET 2.0及以下

如果你的数据表有定义主键,你可以找到行是这样的:

DataTable table = ds.Tables["SomeTable"]; 
DataRow row = table.Rows.Find(1); 

如果没有主键,你可以指定一个这样的:

DataTable table = ds.Tables["SomeTable"]; 
table.PrimaryKey = new DataColumn[] { table.Columns["SomeID"] }; 

DataRow row = table.Rows.Find(1); 

另一种选择是你se DefaultView的RowFilter属性,如下所示:

DataTable table = ds.Tables["SomeTable"]; 

table.DefaultView.RowFilter = "SomeID == 1"; //not sure if it's == or = here 
DataRow row = table.DefaultView[0].Row; 

最后,还可以使用DataTable.Select()方法查找行。

+0

我感谢你的回答。我使用的是.NET 2.0,我不能使用Lamda表达式。我应该在我的问题中加上这一点。我道歉。 – kalls

2

这将让你从0行明显的价值,你会需要修改多行返回

long id = ds.Tables[0].Rows[0].Field<long>("ID"); 
1

我们可以用这个简单的方法得到的数据集值:

System.Data.DataSet ds = db.MySelect(
        "Fields", 
        "Table", 
        "Condition" 
        ); 

     if (ds != null) 
     { 
      if (ds.Tables[0].Rows.Count > 0) 
      { 
       object value=Tables[0].Rows[indx]["field name"]; 
      } 
     }