我有两个数据库。我在两者中做了一些选择:
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] )
}
}
答案 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);
}