C#基础教程(六)容器的LINQ用法

更久没更了,心思又回归到代码学习中了。

很多时候,我们需要对一些容器中的数据进行筛选,通常的做法可能用for/foreach循环来判断,但.net3.5就开始支持LINQ语言,这样使得我们敲代码更加优雅,提升效率,让代码显得更有"质感"。小编我个人认为,代码需要探索精神,突破自己的固有壁垒才逐步提升自己的代码水平,可惜小编对上班不是很感兴趣,志不于此。人走向成功的第一步首先是敢想,梦都不敢做,谈何实现,此话谨献于志在想创立中国500强级公司的有为青年,当然需要脚踏实地,一步一个脚印。好像扯多了,此篇会不断更新补充知识点。。。

1.Skip和Take

Skip(n)主要用于跳跃前n个元素,反过来Take(n)就是取前n个元素。

2.SkipWhile和TakeWhile

SkipWhile情形一:SkipWhile就是跳过满足条件(这里n>=5)的元素开始读取

static void Main(string[] args)
{
    int[] lst = new int[] { 5, 4, 8, 6, 3, 40, 20 };
    List<int> newArr = lst.SkipWhile(n => n >=5).ToList();
    foreach (var item in newArr)
    {
        Console.WriteLine("{0}", item);
    }
    Console.Read();
}
输出:4,8,6,3,40,20

SkipWhile情形二:两个参数,n代表元素值,i代表index值

static void Main(string[] args)
{
    int[] lst = new int[] { 5, 4, 8, 6, 3, 40, 20 };
    List<int> newArr = lst.SkipWhile((n, i) => n >= 5 && i > 2).ToList();//注意&&和||,SkipWhile用||达到需求
    foreach (var item in newArr)
    {
        Console.WriteLine("{0}", item);
    }
    Console.Read();
}
输出:5,4,8,6,3,40,20

static void Main(string[] args)
{
    int[] lst = new int[] { 5, 4, 8, 6, 3, 40, 20 };
    List<int> newArr = lst.SkipWhile((n, i) => n >= 5 || i >2).ToList();//注意&&和||,SkipWhile用||达到需求
    foreach (var item in newArr)
    {
        Console.WriteLine("{0}", item);
    }
    Console.Read();
}
输出:4,8,6,3,40,20

static void Main(string[] args)
{
    int[] lst = new int[] { 5, 4, 8, 6, 3, 40, 20 };
    List<int> newArr = lst.SkipWhile((n, i) => n >= 5 && i < 2).ToList();//注意&&和||,SkipWhile用||达到需求
    foreach (var item in newArr)
    {
        Console.WriteLine("{0}", item);
    }
    Console.Read();
}
输出:4,8,6,3,40,20

static void Main(string[] args)
{
    int[] lst = new int[] { 5, 4, 8, 6, 3, 40, 20 };
    List<int> newArr = lst.SkipWhile((n, i) => n >= 5 || i <2).ToList();//注意&&和||,SkipWhile用||达到需求
    foreach (var item in newArr)
    {
        Console.WriteLine("{0}", item);
    }
    Console.Read();
}

输出:3,40,20

看以上四组输出,&&是跳跃的时候同时判断n,i且要满足条件后跳跃,接着读取元素。

TakeWhile情形一:TakeWhile就是读取满足条件(这里n>=5)的元素,不满足中断返回已读。

static void Main(string[] args)
{
    int[] lst = new int[] { 5, 4, 8, 6, 3, 40, 20 };
    List<int> newArr = lst.TakeWhile((n) => n >= 5).ToList();
    foreach (var item in newArr)
    {
        Console.WriteLine("{0}", item);
    }
    Console.Read();
}
输出:5

TakeWhile情形二:TakeWhile一样是两个参数,n代表元素值,i代表index。


static void Main(string[] args)
{
    int[] lst = new int[] { 5, 4, 8, 6, 3, 40, 20 };
    List<int> newArr = lst.TakeWhile((n,i) => n >= 5&&i>2).ToList();//注意&&和||,TakeWhile用&&达到需求
    foreach (var item in newArr)
    {
        Console.WriteLine("{0}", item);
    }
    Console.Read();
}

输出:无输出

static void Main(string[] args)
{
    int[] lst = new int[] { 5, 4, 8, 6, 3, 40, 20 };
    List<int> newArr = lst.TakeWhile((n,i) => n >= 5||i>2).ToList();//注意&&和||,TakeWhile用&&达到需求
    foreach (var item in newArr)
    {
        Console.WriteLine("{0}", item);
    }
    Console.Read();
}
输出:5

就不一一罗列了,意思跟SkipWhile差不多,对于每一个元素同时满足n和i条件才能确定是否结束返回查询值。敬请期待其它LINQ在容器中的语法糖。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值