我有以下数据库表>>
(string) (float) (float) (float)
TradeNo | Buy_Sell | Trade_Qty | Market_Price
205412 1 50 300
205487 2 30 350
208754 1 20 200
在此表中有专栏Buy_Sell。买= 1,卖= 2
当我绑定网格时,值显示为原样。
但是,我想在网格中将它们显示为>
TradeNo | Buy_Sell | Trade_Qty | Market_Price
205412 Buy 50 300
205487 Sell 30 350
205487 Buy 20 200
我该怎么做?
我只是使用以下代码>
绑定网格try
{
con.Open();
da = new SqlDataAdapter("select ...,
TradeNo, Buy_Sell, TradeQty, MarketPrice", con);
DataSet ds = new DataSet();
da.Fill(ds);
// gvTradeFile.DataSource = ds.Tables[0];
gvTradeFile.DataSource = ds.Tables[0].AsEnumerable()
.Select(d => new
{
TradeNo = d.Field<string>("TradeNo"),
Buy_Sell = d.Field<float>("Buy_Sell") == 1 ? "Buy" : "Sell",
TradeQty = d.Field<float>("TradeQty"),
Market_Price = d.Field<float>("MarketPrice")
});
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
这段代码没有给我任何例外,但也没有向我显示网格结果。
除了LINQ查询之外还有其他方法可以得到这样的结果吗?
答案 0 :(得分:0)
Select
方法返回IQueryable
个结果。这不足以使数据绑定正常工作,因为DataSource
属性等待IList
,IListSource
,IBindingList
或IBindingListView
的对象。
分辨率很简单 - 只需将结果数据集转换为实现其中一个交互的内容,例如只调用ToList
:
.Select(d => new {...}).ToList();
答案 1 :(得分:0)
您需要使用AsDataView()将查询转换回DataView。 e.g。
.Select(d => new
{
TradeNo = d.Field<string>("TradeNo"),
Buy_Sell = d.Field<float>("Buy_Sell") == 1 ? "Buy" : "Sell",
TradeQty = d.Field<float>("TradeQty"),
Market_Price = d.Field<float>("MarketPrice")
})
.AsDataView();