0

我有两个清单。

前任:

    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" );

我必须比较两个列表(无论顺序)。我必须删除第二个列表中的额外值。如果第二个列表包含第一个列表的所有值,那么我必须返回 true。

你能给出任何想法吗?

4

2 回答 2

1

这是作业吗?;-)

实现一个布尔函数并bool equal = true;在第一行定义一个。

首先,您应该确定哪个列表更大。如果它们的大小不同,请将bool equal-Variable 设置为 false,因为它们不相等。

然后你迭代更大的一个(或者两个中的任何一个,如果它们具有相同的大小)并检查迭代的当前元素是否在列表中actual.Contains()。AFAIK 字符串列表检查是否有一个元素等于要在列表中检查的元素。

如果对较小列表的检查为假,则从较大列表中删除当前元素,因为 ist 不包含在另一个列表中。同时设置bool equal为 false,因为列表不再相等。

返回equal变量。

于 2012-06-19T05:33:24.740 回答
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();
        }
于 2012-06-19T05:38:18.780 回答