2011-09-02 1 views
5

データセットを返す次のメソッドがあります。私は特定の行の各列の値を取得し、それを変数にバインドする.NET 2.0データセットから変数に値を取得する

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で行うことができます。 .NET 2.0と

以下の場合

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

あなたのDataTableは、主キーが定義されている場合は、次のように行を見つけることができます。主キーがない場合は

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); 

このように、[既定ののRowFilterプロパティをSE:

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

これは、複数の行が

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

を返されたため、明らかに変更する必要がありますあなたの行0から値を取得します、あなたは、型付きデータセットを使用した時に見たことがありますか?テーブルの主キーに基づいて行を探している場合は、IDを使用して行を取得するメソッドを自動生成し、列の値を名前で取得できるように強く型付けされます。

これらは、.Net 2.0にはかなり便利でしたが、LINQはかなり古いものでした。

編集:私たちは、この簡単な方法を使って、データセットから値を取得することができますわずかに良い参考URL

http://www.c-sharpcorner.com/UploadFile/rupadhyaya/TypedDataSets12032005021013AM/TypedDataSets.aspx

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"]; 
      } 
     }