LINQ中的高级查询

 LINQ查询方法:

1、Method Syntax查询方法方式:主要利用System.Linq.Enumerable类定义的拓展方法和Lambda表达式方法进行查询。

2、Query Syntax查询语句方式。


查询语句和查询方法的关系:编译器负责在编译时将查询语句便以为查询方法,大部分的查询方法都有对应的查询语句姓氏。一般情况下,我们会使用查询语句+查询方法的混合方式进行查询。


常见的高级查询方法分为:聚合、排序、分区、集合、生成。


Ⅰ聚合类:


<span style="font-size:18px;">            //高级方法---聚合类
            //数组数据persons
            int[] arr = { 234, 36, 47, 25, 14, 467, 251235, 135, 35 };
            //聚合类
            Console.WriteLine("arr的最大值" + arr.Max());
            Console.WriteLine("arr的最小值"+ arr.Min());
            Console.WriteLine("arr的平均值" + arr.Average());
            Console.WriteLine("arr的数组元素个数"+ arr.Count());
            Console.WriteLine("arr的总和"+ arr.Sum());
</span>

Ⅱ排序类:

<span style="font-size:18px;">            //数组数据persons
            int[] arr = { 234, 36, 47, 25, 14, 467, 251235, 135, 35 };
            //排序类
            var result = arr.OrderBy(p=>p.ToString().Substring(0,1));

            result.Print();
</span>

Print方法代码:


<span style="font-size:18px;">        public static void Print(this IEnumerable<int> ie)
        {

            IEnumerator<int> result = ie.GetEnumerator();
            Console.WriteLine("\n------------------------\n");
            while(result.MoveNext())
            {
                Console.WriteLine(result.Current);
            }
            Console.WriteLine("\n------------------------\n");
        }
</span>



用查询语句排序:

<span style="font-size:18px;">            var result = arr.OrderBy(p => p.ToString().Substring(0, 1));</span>

用2次排序:

<span style="font-size:18px;">            var result = arr.OrderBy(p=>p.ToString().Substring(0,1)).ThenBy(p=>p);//2次排序
</span>


Ⅲ分区类



<span style="font-size:18px;">            //分区类(分页的时候用到的会很多)
            var result = arr.Skip(3).Take(3);
            result.Print();
</span>


代码为:


<span style="font-size:18px;">            var result = arr.SkipWhile(p => p > 4);//方法体部分是该linq语句不再往后执行的条件。

            result.Print();
</span>


<span style="font-size:18px;">            var result = arr.SkipWhile(p => p > 4);//方法体部分是该linq语句不再往后执行的条件。当第一次聚到条件成立时立即取出
</span>

查询为空就对了。


<span style="font-size:18px;">            var result = arr.TakeWhile(p => p > 4);//方法体部分是该linq语句提取数据的条件,当第一次遇到条件不成立的情况就停止执行。
            result.Print();
</span>


查询结果:




Ⅳ集合类


<span style="font-size:18px;">            //集合类
            var result = arr.Distinct();          
            result.Print();
</span>

Ⅴ生成类--静态方法


<span style="font-size:18px;">            var result = System.Linq.Enumerable.Range(10,50);
            result.Print();
</span>

这个运行的结果是从10到59的50个数。




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值