我看了这么久,我无法看到我在做什么。我试图在C#中遍历两个数据表,并在table2
中构建一个项目列表,这些项目没有完全匹配或未包含在table1
中。但是,我一直在获取table2
项的完整列表。这是一个我无法看到的愚蠢的逻辑错误。谁能看到我在这里失踪的东西?
非常感谢。
string results = null;
foreach (DataRow row1 in table2.Rows)
{
int x = 0;
foreach (DataRow row2 in table1.Rows)
{
var array1 = row1.ItemArray;
var array2 = row2.ItemArray;
if (array1.SequenceEqual(array2))
{
x = 1;
break; // get out of the loop and continue
}
else
{
continue;
}
}
if (x == 0)
{
results = results + (row1["Drug"]);
}
}
答案 0 :(得分:0)
你的逻辑运作正常。这是使用您的逻辑的一个dotnet小提琴示例:https://dotnetfiddle.net/4KMQ0w。
您的问题必须与两个表中的实际值有关。例如,您是否清楚所有数据类型在两个表中是相同的,没有long vs int或不同的字符串长度。如果你还需要打破" SequenceEqual"进入循环并手动对每个字段进行比较。
对代码的次要评论:
1. var array2 = row2.ItemArray;
应该位于foreach之上。
2. continue
虽然没有造成任何伤害,但却是多余的。
3.而不是int x = 0;
使用bool found = false;
或其他东西。
如果您想要一个更有效的整体算法进行比较,请考虑将table1加载到Dictionary中并在那里执行查找。如果你需要一个例子,请告诉我。
祝你好运。