显示来自两个数据库的数据c#

时间:2014-10-23 02:05:43

标签: c# wpf datarow

我有两个数据库。我在两者中做了一些选择:

DataRow[] result1 = MainWindow.dt.Select("number ='" + num_int + "' and Group ="'+ group + '"");
DataRow[] result2 = MainWindow.listUlg.Select("Ulg ='" +row[17]+"'");

我从result1获得:

group1 2  Name1

group2 3  Name2

group3 4  Name3

并形成result2:

3 tarif1

2 tarif2

我想显示tarif2 + Name2和tarif1 + Name1。 我尝试了一些foreach循环,但是当序列不同时我没有正常工作

DataRow[] result1 = MainWindow.dt.Select("number ='" + num_int + "' and Group ="'+group + '"");
foreach (var row in result1)
{

  DataRow[] result2 = MainWindow.listUlg.Select("Ulg ='" +row[17]+"'");

  foreach (var row2 in result2)
  {
     MessageBox.Show(row[2] +" "+ row2[1] )
  }
}

2 个答案:

答案 0 :(得分:0)

据我了解,您必须循环遍历 最小 长度的数组。然后只需提取元素并正常连接它们:

//This is your intial data which depends on the num_int and row[17]
DataRow[] result1 = MainWindow.dt.Select("number ='" + num_int + "' and Group ="'+group + '"");
DataRow[] result2 = MainWindow.listUlg.Select("Ulg ='" +row[17]+"'");

for(var i = 0; i < Math.Min(result1.Length, result2.Length); i++){
   MessageBox.Show(result2[i][1] + " " + result1[i][2]);
}

答案 1 :(得分:0)

您需要一个键来关联数据集1中的行和数据集2中的行,就像外键一样。正如您已经想到的那样,使用该顺序来确定哪一个匹配不起作用。

因此,假设您修改数据模型并添加外键,事情会变得更容易。你可以这样做:

DataRow[] result1 = MainWindow.dt.Select("number ='" + num_int + "' and Group ="'+group + '"");
DataRow[] result2 = MainWindow.listUlg.Select("Ulg ='" +row[17]+"'");

foreach (var row in result1)
{

    string output=row[2];

    if(result2.Where(x=>x.id=row.id).Count()>0)
    {
    var row2 = result2.Where(x=>x.id=row.id).First();
    output+=" "+row2[1];
    }


    MessageBox.Show(output);

}