Linq中Take、TakeWhile、Skip、SkipWhile的比较(转)
2024-09-22 03:28:49
参考文章:http://blog.csdn.net/lxfzgg/article/details/20534281
Take()
int[] numbers = { , , , , , , , , , };
var first3Numbers = numbers.Take(); //从第一个元素开始,获取三个 return的是前面的数 Console.WriteLine("First 3 numbers:"); foreach (var n in first3Numbers)
{
Console.WriteLine(n);//结果 5 4 1
}
TakeWhile()
int[] numbers = { , , , , , , , , , }; //在这里需要注意.使用TakeWhile获取小于6的元素,是从第一个元素开始,
//一直到不满足其小于6这个条件为止.也就是执行到和9这个元素比较后,就结束比较了
//可以想象一下执行过程.
//5<6=true;4<6=true;1<6=true;3<6=true
//9<6=false; 这里就停止继续比较了
var firstNumbersLessThan6 = numbers.TakeWhile(n => n < ); Console.WriteLine("First numbers less than 6:"); foreach (var n in firstNumbersLessThan6)
{
Console.WriteLine(n);//结果为 5 4 1 3
}
Skip()
int[] numbers = { , , , , , , , , , };
var allButFirst4Numbers = numbers.Skip(); //跳过前四个元素,获取后面所有的元素 Console.WriteLine("All but first 4 numbers:"); foreach (var n in allButFirst4Numbers)
{
Console.WriteLine(n);//结果9 8 6 7 2 0
}
SkipWhile()
int[] numbers = { , , , , , , , , , }; //跳过不能被3整除的所有元素
//这里和TakeWhiel又有些不一样。
//TakeWhile遇到条件不满足的时候,就会return,
//但是SkipWhile如果执行到能被三整除的数,那么其后面的元素就不会继续比较了
//同样,想象一下执行过程
//5%3!=0==true; 4%3!=0==true; 1%3!=0==true;
//3%3!=0==false; 运行到这里的时候,后面的就不再比较.
//所以输出结果中会有8、7、2、0这几个不满足条件的元素
var allButFirst3Numbers = numbers.SkipWhile(n => n % != );
foreach (var n in allButFirst3Numbers)
{
Console.WriteLine(n);//结果3 9 8 6 7 2 0
}
最新文章
- github常见问题【转自百度知道】
- shell及脚本4——shell script
- windows下C++高精度计时
- MySQL学习总结
- 优雅的设计单线程范围内的数据共享(ThreadLocal)
- StringBuffer
- 【Java】Lucene检索引擎详解
- ZOJ 2301 / HDU 1199 Color the Ball 离散化+线段树区间连续最大和
- memcached学习(3)memcached的删除机制和发展方向
- BZOJ 2342 双倍回文(manacher算法)
- 使用Putty连接Amazon EC2 Instance
- 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU特性介绍(4)- RT105x选型
- Lightgbm 随笔
- Centos7下安装OpenLDAP+Phpldapadmin及主主同步
- 高性能消息中间件——NATS
- [Eclipse]在重命令文件名时,提示编码格式有问题导致修改失败,需要设置如下几个默认编码为UTF-8
- Hbase 管理页面
- SQL Server中灾难时备份结尾日志(Tail of log)的两种方法
- iOS archive(归档)
- JVM Client Server启动设置