2011-09-02 221 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"]; 
      } 
     }