我正在尝试使用不同的对象迭代两个列表。如果我在比较listTest1
和listTest2
abbrv
和date
相同,我会将对象从listTest2
添加到listTest3
abbrv
相同但date
不同,我会将对象从listTest2
添加到listTest3
,我将已完成的属性切换为{{1 }}。此外,我正在将记录从true
添加到listTest1
。listTest3
中不存在abbrv
listTest1
,我会将listTest2
的记录添加到listTest1
。我知道这听起来很混乱,这就是为什么我会告诉你我会得到什么以及我期待什么。
我得到了:
我需要获取所有这些记录,但重复(Test2)。
listTest3
答案 0 :(得分:2)
您正确实现了前两个条件,但第三个条件无法在最里面的循环中实现:您无法判断abbrv
中listTest1
是否存在listTest2
,直到您的内循环为止结束了。
添加bool
变量abbrvFound
,表示找到了abbrv
。在进入嵌套循环之前将其设置为false
;如果找到匹配项,请将其设置为true
。
循环结束后,请检查abbrvFound
以确定是否需要添加listTest1
对象。
for (int i = 0; i < listTest1.Count; i++) {
bool abbrvFound = false;
for (int a = 0; a < listTest2.Count; a++) {
if (listTest1[i].abbrv != listTest2[a].abbrv)
continue;
abbrvFound = true;
if (listTest1[i].date == listTest2[a].date) {
listTest3.Add(listTest2[a]);
} else {
listTest3.Add(new Test.Test2() { abbrv = listTest2[a].abbrv, date = listTest2[a].date, completed = true, abbrevName = listTest2[a].abbrevName });
listTest3.Add(new Test.Test2() { abbrv = listTest1[i].abbrv, date = listTest1[i].date, completed = listTest1[i].completed, abbrevName = string.Empty });
}
}
if (!abbrvFound) {
listTest3.Add(new Test.Test2() { abbrv = listTest1[i].abbrv, date = listTest1[i].date, completed = listTest1[i].completed, abbrevName = string.Empty });
}
}