У меня есть два DataTable
s. У меня есть некоторые данные, которые были извлечены из XML-файла в Интернете в DataTable
под названием rates
. У меня также есть DataTable
с набором finanical сделок, которые были извлечены из базы данных под названием openTrades
с кодом, как это:Как присоединиться к DataTables?
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.
Спасибо за ответ. Я изменил ваш код в строке, начиная «Rate» до «Rate = (rateRow.Field (« Bid ») + rateRow.Field (« Спросить »))/2', потому что я хочу, чтобы средняя ставка и цена запроса (нет ставки цены). Затем я изменил позицию item.TradeRow в вашем foreach на 'item.TradeRow [" lastPrice "] = item.Rate;' но я получаю эту ошибку в строке 'select':' System.InvalidCastException {«Указанное приведение недействительно . "}' Я отредактировал свой вопрос с полным кодом, который я использую. –
@Mark, эти столбцы в таблице ставок могут не быть десятичными полями, они могут быть двойными или другим форматом. Попробуйте '' сначала или проверьте тип данных. –
Вот и все! Этот код зафиксировал это: 'Rate = (decimal.Parse (rateRow.Field (« Bid »)) + decimal.Parse (rateRow.Field (« Ask »)))/2'. Спасибо за вашу помощь. –