C#Linq Char数组除外() - 奇怪的行为

Rag*_*ghu 6 c# linq

我无法理解为什么这个测试会因消息"Assert.AreEqual失败而失败.预期:<2>.实际:<1>."

        [TestMethod]
        public void Test()
        {
            char[] a1 = "abc".ToCharArray();
            char[] a2 = {'a', 'b', 'c', ' ', ' '};

            Assert.AreEqual(2, a2.Except(a1).Count());
        }
Run Code Online (Sandbox Code Playgroud)

但以下内容将通过:

        [TestMethod]
        public void Test()
        {
            char[] a1 = "abc".ToCharArray();
            char[] a2 = {'a', 'b', 'c', ' ', 'd', ' '};

            Assert.AreEqual(2, a2.Except(a1).Count());
        }
Run Code Online (Sandbox Code Playgroud)

jor*_*hmv 5

除了给你一个SET这意味着它不会返回重复项。

请参阅除了文档


小智 3

因为 except 发现两个序列的差异

http://msdn.microsoft.com/ru-ru/library/system.linq.enumerable. except.aspx

也许你需要这样的东西

var c=a2.Where(a=>a1.Contains(a)==false).Count();
Run Code Online (Sandbox Code Playgroud)