【发布时间】:2018-04-23 15:59:13
【问题描述】:
我一周前问过这个问题,现在我发现了一些我错过的东西。我不知道如果我重新打开这个问题是否会得到任何答复,这就是我创建一个新问题的原因。最后一个条件不起作用。 我正在尝试在具有不同对象的两个列表中进行迭代。当我比较 listTest1 和 listTest2 时,如果它们满足以下条件,我会将记录添加到第三个列表中
- 如果缩写和日期相同,我添加的对象来自 listTest2 到 listTest3
- 如果缩写相同但日期不同,我将添加 对象从 listTest2 到 listTest3 我正在切换完成 属性为真。另外,我正在添加来自 listTest1 的记录 列出Test3。
- 如果 listTest1 中的缩写在 listTest2 中不存在,我将添加 从 listTest1 到 listTest3 的记录。
- 如果 listTest2 中的缩写不存在于 listTest2 中。我正在添加 从listTest2到listTest2的记录
我知道这听起来很令人困惑,这就是为什么我会告诉你我得到了什么以及我期待什么。
class Program
{
static void Main(string[] args)
{
Test1 test1 = new Test1() { abbrv = "Test1", date = new DateTime(2017, 11, 12), completed = false };
Test1 test2 = new Test1() { abbrv = "Test2", date = new DateTime(2017, 12, 17), completed = false };
Test1 test5 = new Test1() { abbrv = "Test5", date = new DateTime(2017, 12, 12), completed = false };
Test2 test3 = new Test2() { abbrv = "Test1", date = new DateTime(2017, 11, 12), completed = false, abbrevName = "AbbrvName1" };
Test2 test4 = new Test2() { abbrv = "Test2", date = new DateTime(2017, 12, 12), completed = false, abbrevName = "AbbrvName2" };
Test2 test7 = new Test2() { abbrv = "Test5", date = new DateTime(2017, 12, 18), completed = false, abbrevName = "AbbrvName3" };
Test2 test6 = new Test2() { abbrv = "Test6", date = new DateTime(2017, 12, 18), completed = false, abbrevName = "AbbrvName3" };
List<Test1> listTest1 = new List<Test1>();
List<Test2> listTest2 = new List<Test2>();
List<Test2> listTest3 = new List<Test2>();
listTest1.Add(test1);
listTest1.Add(test2);
listTest1.Add(test5);
listTest2.Add(test6);
listTest2.Add(test3);
listTest2.Add(test4);
listTest2.Add(test7);
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 Test2() { abbrv = listTest2[a].abbrv, date = listTest2[a].date, completed = true, abbrevName = listTest2[a].abbrevName });
listTest3.Add(new Test2() { abbrv = listTest1[i].abbrv, date = listTest1[i].date, completed = listTest1[i].completed, abbrevName = string.Empty });
}
}
if (!abbrvFound)
{
listTest3.Add(new Test2() { abbrv = listTest1[i].abbrv, date = listTest1[i].date, completed = listTest1[i].completed, abbrevName = string.Empty });
}
}
foreach (var test in listTest3)
{
Console.WriteLine(test.abbrv + " " + test.date + " " + test.completed + " " + test.abbrevName);
}
Console.Write(1);
}
}
public class Test1
{
public string abbrv { get; set; }
public DateTime date { get; set; }
public bool completed { get; set; }
}
public class Test2
{
public string abbrv { get; set; }
public DateTime date { get; set; }
public bool completed { get; set; }
public string abbrevName { get; set; }
}
【问题讨论】:
-
你的最后一个条件没有意义。
-
您能否突出显示您认为正在做最后一点的代码?
-
谢谢。为什么最后一个条件没有意义。没有执行最后一个条件的代码
-
我认为你的意思是“如果listTest1中不存在listTest2的缩写。我正在将listTest2中的记录添加到listTest3”。但是,您只提到 listTest2。
-
那么你做最后一点的问题到底是什么?这似乎是前一点的一个相当简单的变体(即,您已经弄清楚如何在列表 1 中找到不在列表 2 中的东西,为什么不能在列表 2 中找到不在列表中的东西?列表 1) 中的 t。所以你有这个问题吗?您是否写过一些由于某种原因无法正常工作的东西?事实上,你能不知道如何创建相同的东西,而是反过来吗?
标签: c#