首页 > 编程语言 >NET(C#) Linq Take和TakeWhile的使用

NET(C#) Linq Take和TakeWhile的使用

时间:2023-11-06 23:14:56浏览次数:37  
标签:TakeWhile People C# System Linq new using pList

Linq是Language Integrated Query的简称,它是微软在.NET Framework 3.5里面新加入的特性,用以简化查询查询操作。本文主要介绍.NET(C#) 中Linq的Take和TakeWhile操作符。

1、Take操作符

Take操作符用于从输入序列中返回指定数量的元素,常用于分页。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            List<People> pList = new List<People>();
            People p1 = new People(1, "C", 4);
            People p2 = new People(1, "Java", 7);
            People p3 = new People(1, "Python", 11);
            pList.Add(p1);
            pList.Add(p2);
            pList.Add(p3);
            IEnumerable<People> newList = pList.Take(2);    //只取前两个结果
            foreach (var item in newList)
            {
                Console.WriteLine(item.Name);              
            }
            Console.ReadKey();
        }
    }
    public class People
    {
        public People(int id, string name, int age)
        {
            this.Id = id;
            this.Name = name;
            this.Age = age;
        }
        public int Id
        {
            get;
            set;
        }
        public string Name
        {
            get;
            set;
        }
        public int Age
        {
            get;
            set;
        }
    }
}

2、TakeWhile操作符

TakeWhile操作符用于从输入序列中返回指定数量且满足一定条件的元素。

TakeWhile操作符被调用时,会将source序列中的每一个元素顺序传递给委托predicate,只有那些使得predicate返回值为true的元素才会被添加到结果序列中。要特别注意的是,当TakeWhile操作符在查找过程中,遇到第一个返回false的元素就会立即停止执行,跳出,无论后面还有没有符合条件的元素,即使后面有符合条件的元素也不会获取。对于第二个扩展方法,委托里面含有一个int类型的参数,该参数代表集合的下标,可以依据此进行一些据下标操作的逻辑。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            List<People> pList = new List<People>();
            People p1 = new People(1, "C", 6);
            People p2 = new People(1, "C#", 11);
            People p3 = new People(1, "Java", 8);
            People p4 = new People(1, "Python", 15);
            pList.Add(p1);
            pList.Add(p2);
            pList.Add(p3);
            pList.Add(p4);
            IEnumerable<People> newList = pList.TakeWhile(p => p.Age<11);   
            foreach (var item in newList)  
            {
                Console.WriteLine(item.Name); 
            }
            Console.WriteLine();
            IEnumerable<People> newList1 = pList.TakeWhile((p,i) => p.Age<12 && i<2);   //p.Age小于12且下标小于2
            foreach (People p in newList1)
            {
                Console.WriteLine(p.Name); 
            }
            Console.ReadKey();
        }
    }
    public class People
    {
        public People(int id, string name, int age)
        {
            this.Id = id;
            this.Name = name;
            this.Age = age;
        }
        public int Id
        {
            get;
            set;
        }
        public string Name
        {
            get;
            set;
        }
        public int Age
        {
            get;
            set;
        }
    }
}

注意:※ Where和TakeWhile的区别是,Where会选取所有满足条件的集合,而TakeWhile会选取满足条件的集合, 一旦遇到不满足条件的会中止搜索。

 

标签:TakeWhile,People,C#,System,Linq,new,using,pList
From: https://www.cnblogs.com/wwkk/p/17814024.html

相关文章

  • js获去select选中值
    我想获取select选中的value,或者text,或者……比如这个:第一个option第二个option一:JavaScript原生的方法1:拿到select对象:`varmyselect=document.getElementById("select");2:拿到选中项的索引:varindex=myselect.selectedIndex;//selectedIndex代表的是你所选中项的ind......
  • 这次写一下inkscape这个矢量工具的使用,怎么使用shapebuilder, 作为一个设计师应该如何
    绘图工具常用的大家都知道,一般图像有web类型,位图,压缩图,原图,矢量图,而矢量图保存东西是用的矢量保存的,所以在拉伸等变换的时候会基于矢量方向计算,所以填充等总是均匀的,不像位图,拉伸时就会是使图像中的位点变稀疏,图像变得不清晰。这里adobe的photoshop是一个调色工具,这里要记得,虽然p......
  • Semaphore 和 CountdownEvent 的使用总结
    信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取一个信号量。一旦该关键代码段完成了,那么该线程必须释放信号量。其它想进入该关键代码段的线程必须等待直到第一个线程释......
  • Langchain-Chatchat项目:5.1-ChatGLM3-6B工具调用
      在语义、数学、推理、代码、知识等不同角度的数据集上测评显示,ChatGLM3-6B-Base具有在10B以下的基础模型中最强的性能。ChatGLM3-6B采用了全新设计的Prompt格式,除正常的多轮对话外。同时原生支持工具调用(FunctionCall)、代码执行(CodeInterpreter)和Agent任务等复杂场景。本文......
  • Azure Data Factory(十)Data Flow 组件详解
    一,引言随着大数据技术的不断发展,数据处理和分析变得越来越重要。为了满足企业对数据处理的需求,微软推出了AzureDataFactory(ADF),它是一个云端的数据集成服务,用于创建、安排和管理数据工作流。在本文中,我们将重点介绍AzureDataFactory的数据流(DataFlow),以及它如何帮助......
  • 【python爬虫】80页md笔记0基础到scrapy项目高手,第(4)篇:requests和网络数据获取进阶
    本阶段主要学习requests这个http模块,该模块主要用于发送请求响应,该模块有很多的替代模块,比如说urllib模块,但是在工作中用的最多的还是requests模块,requests的代码简洁易懂,相对于臃肿的urllib模块,使用requests编写的爬虫代码将会更少,而且实现某一功能将会简单。因此建议大家掌握该......
  • C# DataTable开发常用
    DataTable前言从事ERP有一段时间了,最常用的集合非DataTable莫属了。在数据量大的情况下,通常使用DataTable来缓存数据库中的表,下面介绍DataTable常用的方法(持续更新中)简介先介绍一下DataTable的结构相信大家从名字也能看得出来表格,类似我们常用的Excel表格一样,但是没有Excel......
  • 207-nginx 或者tomcat报错:413 Request Entity Too Large
    http{#...client_max_body_size20M;#设置最大允许大小为20MB#...}tomcat413RequestEntityTooLarge<Connectorport="8080"protocol="HTTP/1.1"connectionTimeout="20000"redirectPort=&quo......
  • ArcMap生成矢量面的外接圆或外接矩形
      本文介绍在ArcMap软件中,基于一个面图层,绘制其中面要素的最小外接矩形、最小外接圆等的方法。  首先,我们来看一下本文需要实现的需求。现有一个面要素图层,其中包含多个面要素,如下图所示。我们希望绘制这个面要素图层的最小外接矩形——既包括这个完整的面要素图层的最小外接......
  • A Tour Through TREE_RCU's Expedited Grace Periods (翻译)
    原文:https://www.kernel.org/doc/html/latest/RCU/Design/Expedited-Grace-Periods/Expedited-Grace-Periods.htmlATourThroughTREE_RCU'sExpeditedGracePeriods通过TREE_RCU的加速宽限期进行一次旅行Introduction引言ThisdocumentdescribesRCU'sexpeditedgracep......