1、分区运算符
分区运算符主要有四个Take、TakeWhile、Skip、SkipWhile
分区运算符可以帮我们只取得需要的数据,对分页支持很好。
(1)Take
获取数组前三个元素
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var first3Numbers = numbers.Take(3);
(2)TakeWihle
获取数组中数字不小于索引的元素,直到遇到数字小于索引的结束
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var firstSmallNumbers = numbers.TakeWhile((n, index) => n >= index);
结果:5 4
(3)Skip
获取数组从除去前3个元素以外的集合
int[] numbers = { 5, 4, 1, 3, 9};
var allButFirst4Numbers = numbers.Skip(3);
结果:3 9
(4)SkipWhile
获取数组中从第一个能被 3 整除的元素开始的所有元素
int[] numbers = { 5, 4, 1, 3, 9, 8};
// 在 lambda 表达式中,“n”是输入参数,连续标识
// 集合中的每个元素。它被推断为
// int 类型,因为数字是一个 int 数组。
var allButFirst3Numbers = numbers.SkipWhile(n => n % 3 != 0);
2.排序运算符
排序运算符主要有OrderBy 、ThenBy、Reverse
(1)OrderBy
string[] words = { "cherry", "apple", "blueberry" };
var sortedWords =
from word in words
orderby word.Length
select word;
(2)ThenBy
var sorted=
from digit in words
orderby digit.Length, digit descending
select digit;
(3)Reverse
var reversed = (
from digit in words
where digit[1] == 'i'
select digit)
.Reverse();
(4)自定义比较器
var selfWords =
words.OrderBy(a => a.Length)
.ThenByDescending(a => a, new CaseInsensitiveComparer());
public class CaseInsensitiveComparer : IComparer<string>
{
public int Compare(string x, string y)
{
return string.Compare(x, y, StringComparison.OrdinalIgnoreCase);
}
}