Take()方法
Take()从序列的开头返回指定数量的连续元素.
方法有两个参数:
- source数据源;
- count要返回的元素数量.
示例:
int[] groupInts = new[] {65, 84, 74, 89, 51, 54, 24, 32, 48, 7, 12, 58, 64}; var lists = groupInts.OrderByDescending(a => a).Take(5);//降序排序取前五 Console.WriteLine($"排名前五的是:"); foreach (var list in lists) { Console.Write($"{list},"); } result:89.84,74,65,64,
TakeWhile()方法
TakeWhile()当指定的条件为真时,返回序列中的元素;
方法有两个参数:
- IEnumerable<TSource>参数表示数据源;
- Func<TSource, Boolean>
示例:
int[] Ints = new int[] {225,78,32,45,87,74,96,57,28,77}; IEnumerable<int> items; items = Ints.TakeWhile(ints => ints > 50); foreach (var variable in items) { Console.Write(variable+" "); } result:225 78
这里要说明的一点:TakeWhile()方法虽然是获取序列中满足条件的元素,但是,存在的一个坑就是这个返回元素是有一个机制的:如果当前的元素不满足条件那么读取就会停止.换言之,当我们读到32时,它不满足我们的条件,那么后面的元素将不会被读取,所以,鄙人认为,此方法若用于读取范围数值需要与OrderBy联用.
Skip()方法
Skip()跳过序列中指定数量的元素,返回剩余的元素.
参数:
- Source,数据源;
- Count,跳过的元素个数
示例:
int[] Ints = new int[] {225,78,32,45,87,74,96,57,28,77}; var items = Ints.OrderByDescending(n => n).Skip(3);//降序排序后跳过3个元素将剩余元素返回 foreach( var variable in items) { Console.WriteLine($"{variable},"); } resault:75,69,68,54,54,48,42,36,12,11,
SkipWhile()方法
SkipWhile()跳过满足条件的元素,将剩下的元素返.
- IEnumerable<TSource>参数表示数据源;
- Func<TSource, Boolean>
实例:
int[] Ints = new int[] {225,78,32,45,87,74,96,57,28,77}; var items = Ints.SkipWhile(n => n % 2 != 0); foreach( var variable in items) { Console.Write($"{variable},"); } resault:84,78,75,69,68,84,48,42,36,12,11,
这里和TakeWhile()一样,当结果为false时,停止跳过,直接返回剩下的所有元素.