小编Loo*_*op9的帖子

C#为什么Except和Where Enumerable给出了这个奇怪的结果?

我一直在调试这个生产错误,我迫切需要帮助,这对我来说也很有意思.

我简化了代码逻辑并为调试添加了一些打印输出:

int[] a = { 2,2,2 };
var b = a.Where(x => x==2);

for(int i = 0; i < 3; i++)
{
    var c = b.Where(x => x==i);

    Console.WriteLine("iter {0} before - B Count: {1}, C Count: {2}", i, b.Count(), c.Count());

    if (c.Count() != b.Count())
        b = b.Except(c);

    Console.WriteLine("iter {0} after - B Count: {1}, C Count: {2}", i, b.Count(), c.Count());
}

Console.WriteLine("After Loop: B Count: {0}", b.Count());
Run Code Online (Sandbox Code Playgroud)

有趣的是(奇怪),输出是:

iter 0 before - B Count: 3, C Count: 0 …
Run Code Online (Sandbox Code Playgroud)

c# ienumerator enumerator

5
推荐指数
1
解决办法
149
查看次数

标签 统计

c# ×1

enumerator ×1

ienumerator ×1