0

私は2つのリストを持っています。

元:

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

両方のリストを比較する必要があります(順序に関係なく)。2番目のリストにある余分な値を削除する必要があります。2番目のリストに最初のリストのすべての値が含まれている場合は、trueを返す必要があります。

何かアイデアをお願いします。

4

2 に答える 2

1

これは宿題ですか?;-)

bool関数を実装bool equal = true;し、最初の行でaを定義します。

最初に、どのリストが大きいかを判断する必要があります。サイズが同じでない場合は、bool equal-Variableをfalseに設定します。これらは等しくないためです。

次に、大きい方(または同じサイズの場合は2つのうちのいずれか)を反復処理し、反復の現在の要素がリストにあるかどうかを確認しactual.Contains()ます。AFAIK文字列リストは、リストでチェックする要素と等しい要素があるかどうかをチェックします。

小さいリストでこのチェックがfalseの場合、istが他のリストに含まれていないため、大きいリストから現在の要素を削除します。またbool equal、リストを等しくすることができなくなったため、-Variableをfalseに設定します。

equal変数を返します。

于 2012-06-19T05:33:24.740 に答える
1

このようなことはどうでしょうか。「2番目のリストにある余分な値を削除する必要がある」というあなたの声明は明確ではありませんが、両方のリストの結合が必要なだけだと理解していると思います。私は正しいですか?

        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 に答える