Linq-Extensions,代码不会 return even values c#

Linq-Extensions, code won't return even values c#

我有一个关于 lambda 表达式使用的问题。

教科书中有一个简短的作业,给出了一个整数序列 0,2,4,8,7,10,3,2,从第三项开始,只返回整数值,使用 Skip()TakeWhile().我以为我做对了,但只返回了 4,8,所以我偷偷看了一眼解决方案,我的几乎是一样的。

你们能帮帮我吗?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SkipTake
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] sequence= new int[] { 0, 2, 4, 8, 7, 10 , 3, 2 };
            var select = sequence.Skip(2).TakeWhile(n => n % 2 ==0 );
            foreach (var item in select)
                Console.WriteLine(item);
        }
    }
}

TakeWhile 将在 7 处停止。使用 Where 子句

var select = sequence.Skip(2).Where(n => n % 2 ==0 );

您的查询在处理项目“7”时停止,这就是 TakeWhile 命令的行为方式。