LINQ高级查询

高级查询方法

聚合类

Count(),Max()/Min(),Average()

排序类

ThenBy()

分区类

Take(),TakeWhile(),Skip(),WkipWhile()

集合类

Distinct()

生成类

Range(),Repeat()

Count方法

返回集合项的数目,集合中的元素数量

Max/Min方法

求集合中的最大值或者最小值

Average方法

求集合中所有数据的平均值

Sum方法

求集合的所有数的总和

int[] nums = { 1, 22, 18, 2, 3, 5, 7, 6, 8, 9, 23, 12 };

            var res = (from item in nums
                       select item).Count();
            Console.WriteLine("集合中总共有:"+res);

            var res2 = (from item in nums
                        select item).Max();
            Console.WriteLine("集合中最大值:" + res2);
            var res3=(from item in nums
                        select item).Min();
            Console.WriteLine("集合中最小值:" + res3);
            var res4= (from item in nums
                    select item).Average();
            Console.WriteLine("集合中平均值:" + res4);

            var res5 = (from item in nums
                        select item).Sum();
            Console.WriteLine("集合中总和:" + res5);

            var res6 = (from item in nums
                        select item).First();
            Console.WriteLine("集合中第一个:" + res6);

ThenBy方法

提供复合排序条件,为排序方法提供更多的排序字段

 var list = from item in stulist1
                       orderby item.StuAge,item.StuName
                       select item;
            foreach (var item in list)
            {
                Console.WriteLine(item.StuName);
            }

var list = stulist1.OrderBy(item => item.StuAge).ThenBy(item => item.StuName);

Take方法

从集合中的开头提取指定数量的元素

Skip方法

跳过指定数量的元素,并获取剩余数量的元素

TakeWhile方法

只要满足指定的条件,就会返回序列的元素,然后跳过剩余的元素

SkipWhile方法

只要满足指定的条件,就会跳过序列中的元素,然后返回剩余的元素

 int[] nums = { 1, 22, 2, 18, 3, 5, 7, 6, 8, 9, 23, 12 };

            var list = nums.Take(5);
            foreach (var item in list)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("--------------");
            var list2 = nums.Skip(8);
            foreach (var item in list2)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("--------------");
            var list3 = nums.TakeWhile(item=>item%3!=0);
            foreach (var item in list3)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("--------------");
            var list4 = nums.SkipWhile(item => item % 3 != 0);
            foreach (var item in list4)
            {
                Console.WriteLine(item);
            }

Distinct方法

去掉集合中的重复元素

int[] list = { 1, 2, 3, 4, 1, 2, 3, 6, 7, 8 };
            var res = list.Distinct();
            foreach (var item in res)
            {
                Console.WriteLine(item);
            }

Range方法

生成一个整数序列

Repeat方法

生成一个重复项的序列

  1. 这两个方法不是扩展方法,而是普通的静态方法

  2. Range只能产生整数序列

  3. Repeat可以产生泛型序列

  4. 所有的查询方法都存放在System.Linq.Enumerable静态类中

var list1 = Enumerable.Range(1,9);
            var list2 = Enumerable.Repeat(new int[] { 1,2,3},5);
            foreach (var item in list1)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("------------------------");
            foreach (var item in list2)
            {
                Console.WriteLine(item);
            }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值