5

2つのコレクションに同じ要素が含まれていることをどのように主張すればよいですか?IDの順序は重要ではありませんか?

これは、2つのコレクションの各要素の数が同じであることを意味します。ここではいくつかの例を示します。

等しい:
1,2,3,4 == 1,2,3,4
1,2,3,4 == 4,2,3,1
2,1,2 == 2,2,1
1,2、 2 == 2,2,1

等しくない:
1!= 1,1
1,1,2!= 1,2,2

私がやりたいことをすることができるいくつかの定型機能はありますか?これはMicrosoft.VisualStudio.QualityTools.UnitTestFramework.AssertまたはLINQにあると思います。アサートは、それらがどのように異なるかについてのより多くの情報をおそらく提供するので、望ましいでしょう。

4

2 に答える 2

10

CollectionAssert.AreEquivalentを使用できます。

于 2013-01-21T19:55:08.883 に答える
0

ここに1つのオプションがあります:

public static bool AreEqual<T>(this IEnumerable<T> first, IEnumerable<T> second)
{
    var dictionary = first.GroupBy(x => x)
        .ToDictionary(group => group.Key,
        group => group.Count());

    foreach (var item in second)
    {
        int count = dictionary[item];
        if (count <= 0)
            return false;
        else dictionary[item] = count - 1;
    }

    return dictionary.Values.All(count => count > 0);
}
于 2013-01-21T20:22:28.473 に答える