【问题标题】:Joining 2 tables together and looping through using 2 different datasets将 2 个表连接在一起并循环使用 2 个不同的数据集
【发布时间】:2013-07-20 12:09:51
【问题描述】:

我在不同 SQL 服务器上的数据库表中的 C# windows 应用程序中有以下 2 个查询。我需要从一个表中获取 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"];

【问题讨论】:

标签: c# sql dataset dataadapter jointable


【解决方案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);

【讨论】:

  • 谢谢,除了我在 Price 字段(唯一从 dsqry2 合并的字段)上出现无法转换错误之外,它工作正常,任何关于为什么这将来自浮点数据类型字段的想法
猜你喜欢
  • 2019-11-02
  • 1970-01-01
  • 1970-01-01
  • 2017-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-13
  • 2022-11-20
相关资源
最近更新 更多