我有两个清单。
前:
List<string> expected = new List<string>();
expected.Add( "a" );
expected.Add( "b" );
expected.Add( "c" );
actual = new List<string>();
actual.Add( "c" );
actual.Add( "a" );
actual.Add( "b" );
actual.Add( "e" );
actual.Add( "d" );
我必须比较两个列表(无论顺序如何).i必须删除其中的额外值 第二个list.if第二个列表包含第一个列表的所有值,然后我必须返回true。
你能否提出任何想法。
答案 0 :(得分:1)
这是作业吗? ; - )
实现bool函数并在第一行定义bool equal = true;
。
首先,您应该确定哪个列表更大。如果它们的大小不同,请将bool equal
- 变量设置为false,因为它们不相等。
然后迭代较大的一个(或两个中的任何一个,如果它们具有相同的大小)并通过actual.Contains()
检查迭代的当前元素是否在列表中。 AFAIK字符串列表检查是否有一个元素等于要在列表中检查的元素。
如果对于较小的列表,此检查为false,则从较大的列表中删除当前元素,因为ist未包含在另一个列表中。同时将bool equal
- 变量设置为false,因为列表不再相等。
返回equal
变量。
答案 1 :(得分:1)
这样的事情怎么样:我不清楚你的陈述“我必须删除第二个列表中的额外值”,但我想我明白你只想要两个列表的联合。我是对的吗?
var expected = new List<string>();
expected.Add("a");
expected.Add("b");
expected.Add("c");
var actual = new List<string>();
actual.Add("c");
actual.Add("a");
actual.Add("b");
actual.Add("e");
actual.Add("d");
// sort the lists
expected.Sort();
actual.Sort();
// if the lists are equal return true;
if (expected.SequenceEqual(actual))
{
// the lists have the same contents -- return true or whatever
}
else {
// union of both lists (abcde)
var unionOfBoth = expected.Union(actual).ToList();
}