C# 如何将列表框项目复制到列表并将列表与其他列表进行比较

C# 如何将列表框项目复制到列表并将列表与其他列表进行比较,c#,C#,我有List myList和List myList1对象:我想要 为了比较它们,如果它们相似,我想弹出一个消息框,但当我点击按钮时,它什么也不显示 list<string> myList =new list<string>(); list<string> myList1 =new list<string>(); myList1.Add("a"); myList1.Add("r"); myList1.Add("u"); myLis

我有
List myList
List myList1
对象:我想要 为了比较它们,如果它们相似,我想弹出一个消息框,但当我点击按钮时,它什么也不显示

list<string> myList =new list<string>();
list<string> myList1 =new list<string>();          
myList1.Add("a");
myList1.Add("r");
myList1.Add("u");
myList1.Add("y");

foreach (string str in listBox1.Items)
{
    myList.Add(str);
}

if (myList==myList1)
{
    MessageBox.Show("Matched");
}
else { MessageBox.Show("Not matched"); }
list myList=new list();
list myList1=新列表();
myList1.添加(“a”);
myList1.添加(“r”);
myList1.添加(“u”);
myList1.添加(“y”);
foreach(listBox1.Items中的字符串str)
{
myList.Add(str);
}
如果(myList==myList1)
{
MessageBox.Show(“匹配”);
}
else{MessageBox.Show(“不匹配”);}

列表
是引用,您试图比较两个列表,它们是不同的引用。如果要查看相同项目的顺序是否相同:

if(myList.SequenceEquals(myList1))
{
     ....
}
或者如果它们的顺序不同:

if(myList.All(myList1.Contains))
{
     ....
}

列表
是引用,您试图比较两个列表,它们是不同的引用。如果要查看相同项目的顺序是否相同:

if(myList.SequenceEquals(myList1))
{
     ....
}
或者如果它们的顺序不同:

if(myList.All(myList1.Contains))
{
     ....
}


您应该使用
SequenceEqual
方法:另外,您能澄清一下“相似”一词的含义吗?感谢您快速重播我所说的“相似”匹配,列表框中的项目集合是“a”“b”“c”“d”我制作了一个按钮,将这些项目复制到一个列表中,并称之为myList,然后我制作了另一个列表,并将相同的列表框项目添加到列表中,尽管它们是相同的项目,但我仍然得到不匹配的bool equal=myList.SequenceEqual(myList1);如果(equal==true){MessageBox.Show(“Matched”);}其他{MessageBox.Show(“notmatched”);}它对我很好,谢谢你们,我很高兴你们的快速回答你们应该使用
SequenceEqual
方法:,请您澄清一下“相似”一词的含义好吗?感谢您快速重播我所说的“相似”匹配,列表框中的项目集合是“a”“b”“c”“d”我制作了一个按钮,将这些项目复制到一个列表中,并称之为myList,然后我制作了另一个列表,并将相同的列表框项目添加到列表中,尽管它们是相同的项目,但我仍然得到不匹配的bool equal=myList.SequenceEqual(myList1);如果(equal==true){MessageBox.Show(“Matched”);}否则{MessageBox.Show(“notmatched”);}它对我很有效,谢谢你们,伙计们,我很高兴你们的快速回答,你们需要为你们想要比较的每个集合类型提供一个合适的接口。这不是最好的方法,@OlegBondarenko列表是字符串-。说到不是最好的方法——导入一个完整的json序列化框架来等同于2个列表……而且,更容易推动
IEqualityComparer
并将其传递给重载的LINQ方法,这无疑是这个问题的狭义答案。此接口实现不需要字符串。我的意思是关于自定义引用类型。在这个问题中没有自定义引用类型。您正在回答一个尚未询问的问题。对于要比较的每个集合类型,您都需要实现IEquatable接口。这不是最好的方法,@OlegBondarenko列表是字符串-。说到不是最好的方法——导入一个完整的json序列化框架来等同于2个列表……而且,更容易推动
IEqualityComparer
并将其传递给重载的LINQ方法,这无疑是这个问题的狭义答案。此接口实现不需要字符串。我的意思是关于自定义引用类型。在这个问题中没有自定义引用类型。你在回答一个没有被问到的问题。