首页 新闻 会员 周边

下面的linq代码怎么解释??

0
[已解决问题] 解决于 2015-09-02 17:34

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);
}

星星点灯6的主页 星星点灯6 | 初学一级 | 园豆:164
提问于:2015-08-05 18:20
< >
分享
最佳答案
0

楼上都是正解,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对象。

奖励园豆:5
小白菜T | 小虾三级 |园豆:564 | 2015-08-06 10:19
其他回答(2)
0

要理解这段代码 只要理解skipwhile的功能就了

skipwhile的意思就是在再一个集合中跳过那些满足表达式的对象,仅仅留下那些不满足表达式的对象,简单说只要表达式内部为true的对象,集合一律不保存只保存那些为false

skipwhile接受一个Func表达式,该表达式含有两个参数一个是例如(n,index)  n 为集合中的数值,index表示当前值在集合中的索引

visonme | 园豆:1674 (小虾三级) | 2015-08-05 20:48
0

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对象。

爱编程的大叔 | 园豆:30839 (高人七级) | 2015-08-05 21:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册