我无法理解为什么此测试会因消息“Assert.AreEqual失败而失败。预期:< 2>。实际:< 1>。”
[TestMethod]
public void Test()
{
char[] a1 = "abc".ToCharArray();
char[] a2 = {'a', 'b', 'c', ' ', ' '};
Assert.AreEqual(2, a2.Except(a1).Count());
}
但以下内容将通过:
[TestMethod]
public void Test()
{
char[] a1 = "abc".ToCharArray();
char[] a2 = {'a', 'b', 'c', ' ', 'd', ' '};
Assert.AreEqual(2, a2.Except(a1).Count());
}
答案 0 :(得分:4)
除了为您提供 SET ,这意味着它不会返回重复项。
答案 1 :(得分:3)
除了给你一个明确的清单。
char[] a1 = "abc".ToCharArray();
char[] a2 = {'a', 'b', 'c', ' ', '1'};
Assert.AreEqual(2, a2.Except(a1).Count()); // Passes
答案 2 :(得分:3)
Except
函数返回两个序列的设置差异 - 而不是差异。
空格字符只返回一次。
答案 3 :(得分:2)
因为除了找到两个序列的差异
http://msdn.microsoft.com/ru-ru/library/system.linq.enumerable.except.aspx
也许你需要这样的东西
var c=a2.Where(a=>a1.Contains(a)==false).Count();