Объединение 2 таблиц вместе и циклическое использование 2 разных наборов данных

У меня есть следующие 2 запроса в приложении Windows на С# из таблиц базы данных на разных серверах SQL. Мне нужно получить Order, LineNo и Quantity из одной таблицы, а также цену для этого заказа и номер строки в другой таблице на другой таблице сервера, чтобы выполнить цикл и вставить результаты в новую таблицу.

Все работает нормально, за исключением того, что я не могу получить это значение цены для каждого линейного ордера, поскольку оно находится в другой таблице.

Как я могу объединить два стола? будет ли работать что-то вроде ниже?

Обратите внимание на переменную в цикле, чтобы получить цену

decimal decPrice = (decimal)dsqry2.Tables[0].Rows[intCountOrders]["Price"];

из другого набора данных

string strQuery1 = "SELECT ORDER, LINENO, QUANTITY FROM ORDERS";

SqlDataAdapter qry1Adapter = new SqlDataAdapter(strQuery1, sqldb);

DataSet dsqry1 = new DataSet();

qry1Adapter.Fill(dsqry1);

string strQuery2 = "SELECT ORDER, LINENO, PRICE FROM PRICES";

SqlDataAdapter qry2Adapter = new SqlDataAdapter(strQuery2, sql2db);

DataSet dsqry2 = new DataSet();

qry2Adapter.Fill(dsqry2);

if (dsqry1.Tables[0].Rows.Count > 0)
{
    int intCountOrders = 0;

    while (intCountOrders < dsqry1.Tables[0].Rows.Count)
    {
         string strPartNo = dsqry1.Tables[0].Rows[intCountOrders]["Order"].ToString();
         string strLineNo = dsqry1.Tables[0].Rows[intCountOrders]["LineNo"].ToString();
         int intQuantity = (int)dsqry1.Tables[0].Rows[intCountOrders]["Quantity"];

         decimal decPrice = (decimal)dsqry2.Tables[0].Rows[intCountOrders]["Price"];

person user1302054    schedule 21.07.2013    source источник
comment
stackoverflow.com/questions/331265/   -  person Andrey Morozov    schedule 21.07.2013


Ответы (1)


вы можете попробовать использовать merge

dsqry1.Merge(dsqry2);

http://msdn.microsoft.com/en-us/library/aa984388(v=vs.71).aspxenter

вы также можете попробовать что-то вроде этого

var joinedData =(from c in  dsqry1.Tables[0].AsEnumerable() select c).Union(from c 
in dsqry2.Tables[0].AsEnumerable() select c);
person COLD TOLD    schedule 21.07.2013
comment
Спасибо, это работает нормально, за исключением того, что я получаю сообщение об ошибке «Не могу привести» в поле «Цена» (единственное поле, объединенное с dsqry2), любые идеи о том, почему это может быть из поля типа данных с плавающей запятой. - person user1302054; 24.07.2013