0

次のデータベーステーブルがあります>>

   (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クエリ以外の方法はありますか?

4

2 に答える 2

0

AsDataView()を使用してクエリを DataView に戻す必要があります。例えば

.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();
于 2013-03-21T07:11:09.780 に答える