私は2つのDataTable
を持っています。インターネット上のXMLファイルから、rates
というDataTable
に検索されたデータがあります。DataTablesに参加するには?
DataTable rates = DB.GetCurrentFxPrices("http://rates.fxcm.com/RatesXML");
DataTable openTrades = DB.GetOpenTrades();
私はrate
と呼ばopenTrades
に列を追加し、そこから現在のレートを置きたい:私はまた、このようなコードでopenTrades
と呼ばれるデータベースから取得されたfinanical取引のセットでDataTable
を持っていますrates
DataTable
は、symbol
という列に参加しています。次の列がありDataTable
料金:
tradeId, symbol
と、新たに追加されたrate
コラム:
Bid, Ask, High, Low, Direction, Last, Symbol
openTrades DataTable
は、以下の関連列があります。私はこのデータを一緒に結合する最も効率的な方法を探していて、新しいrate
列にopenTrades DataTable
の結果があります。
EDIT
私はこのコードをしようとしている:
DBUtil DB = new DBUtil();
DataTable rates = DB.GetCurrentFxPrices("http://rates.fxcm.com/RatesXML");
DataTable openTrades = DB.GetOpenTrades();
openTrades.Columns.Add("Bid", typeof(decimal));
openTrades.Columns.Add("Ask", typeof(decimal));
var query = from DataRow tradeRow in openTrades.Rows
join DataRow rateRow in rates.Rows
on tradeRow.Field<string>("symbol") equals rateRow.Field<string>("Symbol")
select new
{
TradeRow = tradeRow,
//Bid = rateRow.Field<decimal>("Bid"),
//Ask = rateRow.Field<decimal>("Ask")
Rate = (rateRow.Field<decimal>("Bid") + rateRow.Field<decimal>("Ask"))/2
};
foreach (var item in query)
{
//item.TradeRow["Bid"] = item.Bid;
//item.TradeRow["Ask"] = item.Ask;
item.TradeRow["lastPrice"] = item.Rate;
}
をしかし、私はselect
に、このエラーを取得する:
System.InvalidCastException: Specified cast is not valid.
返信いただきありがとうございます。私はあなたのコードを 'Rate =' rate =(rateRow.Field( "Bid")+ rateRow.Field ( "Ask"))/ 2 'に変更して、 (金利価格はありません)。あなたのforeach内のitem.TradeRowをitem.TradeRow ["lastPrice"] = item.Rate;に変更しましたが、 'select'行にこのエラーが出ます:' System.InvalidCastException {"指定されたキャストは無効です"}'私は使用している完全なコードで質問を編集しました。 –
@ Markでは、レートテーブルの列は小数点以下の桁数ではなく、倍数形式または別の形式になる可能性があります。最初に ''を試してみるか、データの種類をテストしてください。 –
それはそれでした!このコードはそれを修正しました: 'Rate =(decimal.Parse(rateRow.Field(" Bid "))+ decimal.Parse(rateRow.Field ))/ 2'ご協力いただきありがとうございます。 –