У меня есть два DataTable
с. У меня есть некоторые данные, которые были извлечены из файла XML в Интернете в DataTable
с именем rates
. У меня также есть DataTable
с набором финансовых сделок, которые были извлечены из базы данных под названием openTrades
с кодом, подобным этому:
DataTable rates = DB.GetCurrentFxPrices("http://rates.fxcm.com/RatesXML");
DataTable openTrades = DB.GetOpenTrades();
Я хочу добавить столбец к openTrades
с именем rate
и указать текущую скорость соединения rates
DataTable
со столбцом с именем symbol
.
ставки DataTable
имеет следующие столбцы:
Bid, Ask, High, Low, Direction, Last, Symbol
openTrades DataTable
имеет следующие соответствующие столбцы:
tradeId, symbol
и недавно добавленный столбец rate
. Я ищу наиболее эффективный способ объединить эти данные и получить результаты в openTrades DataTable
в новом столбце rate
.
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.