使用 C# 比较 DB2 和 SQL Server 中的表

问题描述 投票:0回答:1

我想将 IBM DB2 数据库中的股票记录与 SQL 数据库中的表进行比较,并将不同的记录导入到数据视图中。然后我会将不同的记录传输到SQL表中。

我目前正在从 db2 stock 表中获取我想要的记录,但我找不到如何将它们与 SQL stock 表进行比较。我想我需要为 db2 虚拟股票表分配一个字段。我想比较股票代码并获得不同的记录。

我还会在不同记录的开头进行检查,并将它们传输到 SQL stock 表中。

public partial class frmStok : MetroFramework.Forms.MetroForm
 {
     DB2Connection db2bagla = new DB2Connection(frmMain.settings.db2con);
     SqlConnection sqlbagla = new SqlConnection(frmMain.settings.sqlcon);
     public frmStok()
     {
         InitializeComponent();
     }
     void db2StokGetir()
     {
         try
         {
             DB2DataAdapter db2da = new DB2DataAdapter("SELECT DISTINCT S.PARCAKOD,P.ADI,P.BIRIM,P.KDVYUZ,P.GRUP1 FROM DB2ADMIN.T0020031 S LEFT OUTER JOIN DB2ADMIN.T0050030 P ON S.PARCAKOD = P.KOD WHERE ((YEAR( S.TARIH) >= 2023)) GROUP BY S.PARCAKOD,P.ADI,P.BIRIM,P.KDVYUZ,P.GRUP1", db2bagla);
             SqlDataAdapter sqlda = new SqlDataAdapter("SELECT STOK_KODU FROM TBLSTSABIT", sqlbagla);

             DataSet db2stok = new DataSet();
             DataSet sqlstok = new DataSet();
             db2da.Fill(db2stok, "DMSSTOK");
             sqlda.Fill(sqlstok, "SQLSTOK");
             metroGrid1.DataSource = db2stok.Tables[0];
            


             metroLabel1.Text=metroGrid1.RowCount.ToString();
             
         }
             catch (Exception ex)
         {
             MessageBox.Show(ex.Message.ToString());
         }

     }
c# sql-server datatable db2
1个回答
0
投票

我建议您在填充数据集后使用 LINQ。

确保您有 LINQ 参考:

using System.Linq;

这是一个示例

var db2stokQry = db2stok.Tables[0].AsEnumerable();
var sqlstokQty = sqlstok.Tables[0].AsEnumerable();

return (from x in db2stokQry
        join y in sqlstok on x.PARCAKOD equals y.STOK_KODU
        select new ClassObject
        {
            prop1 = x.Field1,
            prop2 = y.Field1,
            prop3 = x.Field2
        }).ToList();
© www.soinside.com 2019 - 2024. All rights reserved.