2014-09-19 97 views
0

我使用存儲過程中的實體框架獲取數據集中的數據,現在我必須在c#代碼中顯示特定列的數據。我嘗試過使用XML格式的WriteXML。 這裏是我的代碼,我附上存儲過程結果的照片。 enter image description here顯示來自DataSet的數據

DataSet myds = new DataSet(); 
      myds = new BLRestaurant().GetMenu(); 
      Console.WriteLine("Please select items from the menu listed:"); 
      Console.WriteLine("          Menu"); 
      Console.WriteLine(" -----------------------------------------------------------------------------"); 
      Console.WriteLine(" | ID |   ITEM    | ACTUAL PRICE | DISCOUNTED PRICE | "); 
      Console.WriteLine(" -----------------------------------------------------------------------------"); 
+0

你沒有做它清楚你的問題是什麼。 – mason 2014-09-19 16:01:43

+0

您提供了一個模糊的要求,但不是一個問題?你在問什麼? – 2014-09-19 16:02:18

+0

我想從數據集打印數據。但是如何? – 2014-09-19 16:02:55

回答

0
foreach(DataRow row in myds.Tables[0].Rows) 
{  
    var id = row["ItemID"]; 
    var name = row["ItemName"]; 
} 

會得到你的數據顯示。你可以通過表圈,並獲得列名如下,如果你正在尋找的東西更通用:

IEnumerable<string> columns = tbl.Columns.Cast<DataColumn>().Select(x => x.ColumnName); 

你也可以合併前兩行的實例,其立即被覆蓋一個DataSet差內存管理:

DataSet myds = new BLRestaurant().GetMenu(); 
+0

有什麼方法可以直接從數據集顯示數據而不使用數據表? – 2014-09-19 16:05:16

+0

@ Umm-e-Habiba你怎麼知道在數據集中使用哪張表而不說哪個表? – mason 2014-09-19 16:06:58

+0

@ Umm-e-Habiba你需要指定一個表格,就像你在sql中選擇時指定一個表格一樣。 – 2014-09-19 16:07:55

2

當你正在使用的.Net輸出到一個GridView

<asp:GridView Id="MyGridView" runat="server" /> 

然後在後面的代碼做一些事情,如:

private LoadGridView() 
    { 
     MyGridView.DataSource = GetMyData(); 
     MyGridView.DataBind(); 
    } 

    private DataTable GetMyData() 
    { 
     DataTable result = new DataTable(); 
     SqlConnection con = new SqlConnection(SQLConn); 
     SqlCommand cmd = new SqlCommand("[MyStoreProcedure]", con); 
     cmd.CommandType = CommandType.StoredProcedure; 
     try 
     { 
      con.Open(); 
      //Define parameters here 
      SqlDataAdapter adapter = new SqlDataAdapter(cmd); 
      adapter.Fill(result); 
     } 
     catch (Exception ex) 
     { 
      //trap for errors 
     } 
     finally 
     { 
      con.Close(); 
      con.Dispose(); 
      cmd.Dispose(); 
     } 
     return result; 
    } 

即使你不想在GridView,你最好還是將數據放入一個DataTable,你可以操作,並通過它與類似的語句重複:

foreach(DataRow dr in MyDataTable.Rows) 
    { 
     //do some stuff with the row 
     //find a value in a column? 
     string fieldText = dr["ColumnA"].Text; 
    }