Linq 是对集合操作的
集中常见的操作
例如 List list = new List();
list.Where(a=>a>10)
list.Single(a=>a>10) 表示有且只能有一个结果, 如果没有或者很多个就会报错
list.SingleOrDefault(a=>a>10) 表示获取一个结果,如果没有的话会显示这个类型的默认值,如果多的话就会报错
list.First(a=>a>10) 表示获取满足条件的第一个结果
list.FirstOrDefault(a=>a>10) 表示获取满足条件的第一个结果 ,如果没有满足条件的结果,返回此类型的默认值

 list.Skip(1) 表示跳过一个值     Skip 与 Take 用于分页很好使
 list.Take(2) 表示 取得两个值

正序排序OrderBy 倒序排序 OrderByDescending  
list.OrderBy(i=>i) 自身排序
list.OrderBy(i=>i.Age) 通过属性进行排序
list.OrderBy(i=>i.Age).ThenBy(i=>i.Salary) 多级排序  
list.OrderBy(i=>Guid.NewGuid) 随机排序

聚合函数
Max Min Average Count 
       int[] ints = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
        int max = ints.Max(i => i);
        int min = ints.Min(i => i);
        double average = ints.Average(i => i);
        int count = ints.Count();
        Console.WriteLine($"max = {max} , min = {min} , average = {average} , count = {count}");
        max = 9 , min = 0 , average = 4.5 , count = 10
分组函数 GroupBy(a=>a.age) 会产生一个分好组的列表 大概就是List<Dictionary<int ,object>>一样的
        var enumerable = employees.GroupBy(c=>c.Age);
        foreach (var item in enumerable)
        {
            Console.WriteLine(item.Key);
            foreach (var item2 in item) 
            {
                Console.WriteLine(item2);
            }
            Console.WriteLine("===================");
        }
     //产生的效果

18
1 ,Jerry,18,90100,男
3 ,John,18,6000,男
6 ,On,18,1000,男

32
2 ,Mike,32,4000,男

22
4 ,Marry,22,1000,女

44
5 ,Sherry,44,9000,男

25
7 ,YouZack,25,9230,男

17
8 ,NGM,17,7656,男