5

我应该如何断言两个集合包含相同的元素 id 顺序无关紧要?

这意味着两个集合中每个元素的数量相同。这里有些例子:

等于:
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

这是一种选择:

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 回答