2011-03-07 64 views
0

我有下面的數據表排序,並從數據視圖獲得頂層5行

DataTable dtEquityHoldings = new DataTable("EquityHoldings"); 
dtEquityHoldings.Columns.Add("EquityHoldings"); 
dtEquityHoldings.Columns.Add("PortfolioWeight(%)"); 
dtEquityHoldings.Columns.Add("MarketValue", typeof(double)); 
dtEquityHoldings.Columns.Add("Beta", typeof(double)); 
dtEquityHoldings.Columns.Add("Beta Adj. Delta", typeof(double)); 
dtEquityHoldings.Columns.Add("Vega", typeof(double)); 
dtEquityHoldings.Rows.Add("Santarus Inc", "0.81%", 882380.26, -1.56, 114709.43, 24937.23); 
dtEquityHoldings.Rows.Add("Dell Inc", "1.21%", 1318123.60, 1.3, 324757.27, 47923.72); 
dtEquityHoldings.Rows.Add("JPMorgan and Chase Co", "2.95%", 3213607.12, 1.12, 258414.50, 38472.28); 
dtEquityHoldings.Rows.Add("Qualcomm Inc", "1.38%", 1503314.52, 1, 315608.54, 36938.75); 
dtEquityHoldings.Rows.Add("Nokia", "2.45%", 2668927.95, 0.87, -346960.63, 39283.23); 
dtEquityHoldings.Rows.Add("Rite Aid Corp", "1.84%", 2004419.36, 0.82, 139526.19, 92374.56); 
dtEquityHoldings.Rows.Add("General Electric", "3.80%", 4139561.72, -0.78, 538143.02, 23947.83); 
dtEquityHoldings.Rows.Add("Microsoft Corp", "2.06%", 2244078.20, 0.78, 454383.09, 42938.44); 
dtEquityHoldings.Rows.Add("Johnson & Johnson", "4.47%", 4869431.81, 0.63, 633026.14, 82374.23); 
dtEquityHoldings.Rows.Add("Power Inc.", "3.46%", 3769179.88, 0.13, 493374.82, 12930.02); 

我想測試版列進行排序,然後我得把前5行,然後我有權約束,要

我使用的是數據視圖網格,下

DataView dvData = new DataView(dtEquityHoldings); 
dvData.ToTable().AsEnumerable().OrderBy(r => r["Beta"]).Take(5); 
dataGridView1.DataSource = dvData; 

這不是工作

普萊斯e幫助

還有一個

回答

1

您正在使用LINQ。 LINQ方法不會修改原始集合。試試這個:

dataGridView1.DataSource = dvData.ToTable().AsEnumerable().OrderBy(r => r["Beta"]).Take(5).ToList(); 
+0

但它沒有顯示任何網格 – wpfNewBie 2011-03-07 13:03:24

+0

@wpf,它是winForms的gridView? – Snowbear 2011-03-07 13:06:34

+0

是的,它是winForms gridView – wpfNewBie 2011-03-07 13:19:37