Linq中Take、TakeWhile、Skip、SkipWhile的比较(转)

参考文章:http://blog.csdn.net/lxfzgg/article/details/20534281

 

Take()
            
复制代码
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var first3Numbers = numbers.Take(3); //从第一个元素开始,获取三个 return的是前面的数
 
Console.WriteLine("First 3 numbers:");
 
foreach (var n in first3Numbers)
{
      Console.WriteLine(n);//结果 5 4 1
}
复制代码

 

 
TakeWhile()
            
复制代码
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
 
//在这里需要注意.使用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 < 6);
 
Console.WriteLine("First numbers less than 6:");
 
foreach (var n in firstNumbersLessThan6)
{
    Console.WriteLine(n);//结果为 5 4 1 3
}
 
复制代码

 

 Skip()
            
复制代码
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var allButFirst4Numbers = numbers.Skip(4); //跳过前四个元素,获取后面所有的元素
 
Console.WriteLine("All but first 4 numbers:");
 
 foreach (var n in allButFirst4Numbers)
{
     Console.WriteLine(n);//结果9 8 6 7 2 0
}
复制代码

 

            
SkipWhile()
 
复制代码
 int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
  
//跳过不能被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 % 3 != 0);
foreach (var n in allButFirst3Numbers)
{
   Console.WriteLine(n);//结果3 9 8 6 7 2 0
}
复制代码

 

           

 

posted @   大稳·杨  阅读(763)  评论(0编辑  收藏  举报
编辑推荐:
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤
点击右上角即可分享
微信分享提示