有两个列表:
List<int> list2 = new List<int>(new[] { 1, 2, 3, 5, 6 }); // missing: 0 and 4
List<int> list1 = new List<int>(new[] { 0, 1, 2, 3, 4, 5, 6 });
你如何比较两个列表,在 List1 中找到缺失的数字并从 List1 中删除这些数字?更准确地说,我需要找到一种方法来指定比较的开始和结束位置。
我想这个过程应该和这个非常相似:
第1步。
int start_num = 3; // we know that comparisons starts at number 3
int start = list2.IndexOf(start_num); // we get index of Number (3)
int end = start + 2; // get ending position
int end_num = list2[end]; // get ending number (6)
现在我们在 List2 (3,5,6) 中得到了数字(和数字本身)的位置供比较
第 2 步。要获取 List1 中数字的位置以进行比较 - 我们可以执行以下操作:
int startlist1 = list1.IndexOf(start_num); // starting position
int endlist1 = list1.IndexOf(end_num); // ending position
范围如下:(3,4,5,6)
步骤 3. 比较。棘手的部分从这里开始,我需要帮助
基本上现在我们需要比较 (3,5,6) 处的 list2 和 (3,4,5,6) 处的 list1。缺少的数字是“4”。
// I have troubles with this step but the result will be:
int remove_it = 4; // or int []
步骤 4. 去除奇数。
int remove_it = 4;
list1 = list1.Where(a => a != remove_it).ToList();
效果很好,但是如果我们有 2 个缺失的数字会发生什么?IE
int remove_it = 4 // becomes int[] remove_it = {4, 0}
结果如您所料,结果是新的 List1,其中没有数字 4。
richTextBox1.Text = "" + string.Join(",", list1.ToArray()); // output: 0,1,2,3,5,6
textBox1.Text = "" + start + " " + start_num; // output: 2 3
textBox3.Text = "" + end + " " + end_num; // output: 4 6
textBox2.Text = "" + startlist1; // output: 3
textBox4.Text = "" + endlist1; // output: 6
你能帮我完成第3步或指出正确的方向吗?
另外,你能说如果起始数字(start_num)是最后一个数字会发生什么,但我需要得到接下来的两个数字?在上面的示例中,数字是3,5,6,但它们应该与5,6,0或6,0,1或0,1,2没有区别。