int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var laterNumbers = numbers.SkipWhile((n, index) => n >= index);
Console.WriteLine("All elements starting from first element less than its position:");
foreach (var n in laterNumbers)
{
Console.WriteLine(n);
}
楼上都是正解,n和index分别为
n: 5, 4, 1, 3, 9, 8, 6, 7, 2, 0
index: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
所以结果就是值为{5, 4, 3, 9, 8, 6, 7}的IEnumable对象。
要理解这段代码 只要理解skipwhile的功能就了
skipwhile的意思就是在再一个集合中跳过那些满足表达式的对象,仅仅留下那些不满足表达式的对象,简单说只要表达式内部为true的对象,集合一律不保存只保存那些为false
skipwhile接受一个Func表达式,该表达式含有两个参数一个是例如(n,index) n 为集合中的数值,index表示当前值在集合中的索引
skip = 跳过(忽略)
while = 当符合.... 条件
后面的(n,index) => n>=index 是一个Func 匿名函数
n参数1
index参数2
当n>=index时返回true
否则返回false
以上解释连接在一起
var laterNumbers = numbers.SkipWhile((n, index) => n >= index);
从数组numbers里面跳过数字值大于等于位置值的数字,即数字小于位置值(以0开始)的数字并返回一个IEnumable对象。