using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace CompareNumbers
{
public partial class Form1 : Form
{
List<int> myValues = new List<int>(new int[] { 5, 9, 3, 4, 7, 12, 0, 15 });
List<int> newValues = new List<int>();
public Form1()
{
InitializeComponent();
Compare();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void Compare()
{
for (int i = 0; i < myValues.Count; i++)
{
if (!newValues.Contains(myValues[i]))
{
newValues.Add(myValues[i]);
}
for (int x = 0; x < newValues.Count; x++)
{
}
}
}
}
}
我有一些带有一些数字的列表。还有一个空的列表。
我需要创建两个列表的比较并检查新数字。
第一次List newValues为空,因此条件应该使它添加myValues中的所有数字。所以现在newValues包含所有数字。
现在我需要首先为一个数字制定一些条件,然后为两个数字制作一些条件,然后是三个数字。
我的意思是,如果新的号码我在myValues列表中添加了一个新号码,以检查myValues中是否存在此号码,如果它没有添加它,则不会将其添加到newValues。
然后,如果将两个数字添加到myValues列表中,然后添加三个数字。要查看myValues中是否已存在这些数字,请不要将它们添加到newValues,如果它们尚未存在于myValues中,则将它们添加到newValues。
我的问题是如何在内循环中创造所有条件?应该有多少个IF。
这部分我也做了我不确定它是否正确:
if (!newValues.Contains(myValues[i]))
{
newValues.Add(myValues[i]);
}
我没有解释它的逻辑性。
我有这个空列表:
List<NewsLine> OnlyNew = new List<NewsLine>();
然后我有这个班:
class NewsLine
{
public string text;
public string time;
public string link;
}
然后这个方法:
private void AddOnlyNew(List<NewsLine> test_lnl)
{
for (int x = 0; x < test_lnl.Count; x++)
{
for (int y = 0; y < OnlyNew.Count; y++)
{
}
}
}
现在我需要检查每次是否有新文本,时间,链接然后添加它们。
仅仅检查我应该在内循环中进行的文本或时间或链接是否足够,使用IF来决定是否将它们添加到OnlyNew列表中。
修改
class NewsLine
{
public string text;
public string original_time;
public string link;
// Straight compare of the two objects.
public static int Compare(NewsLine n1, NewsLine n2)
{
// How to do the comparisdon is up to you.
// In this example, if the first property is different we use that,
// else if the second property is different use that, else use the final property.
if (n1.text != n2.text)
return string.Compare(n1.text, n2.text);
else if (n1.original_time != n2.original_time)
return string.Compare(n1.original_time, n2.original_time);
else
return string.Compare(n1.link, n2.link);
}
答案 0 :(得分:3)
如果我理解正确,你可以这样做。 这将添加来自nowValue的任何不存在于newValues中的项目。
newValues.AddRange(existingValue.Except(newValues));
答案 1 :(得分:1)
创建一个尼特测试,如果他们需要是相同的订单,请使用CollectionAssert.AreEqual()
,CollectionAssert.AreEquivilent()
他们只需要包含相同的项目。
答案 2 :(得分:0)
您需要循环第一个列表以确保添加所有项目:
foreach(int existingValue in myValues)
{
if(!newValues.Contains(existingValue))
{
newValues.Add(existingValue);
}
}
这也可以使用LINQ:
完成newValues.AddRange(myValues.Where(n => !newValues.Contains(n)));