LINQ基础学习2

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);
    }
}

你可能感兴趣的:(LINQ)