C#LINQ

LINQ(Language Integrated Query )语言集成查询,是一组用于C#和VB语言的拓展,它允许VB或者C#代码以操作内存数据的方式,查询数据库。

LINQ使用的优点:

  • 无需复杂学习过程即可上手。
  • 编写更少代码即可创建完整应用。
  • 更快开发错误更少的应用程序。
  • 无需求助奇怪的编程技巧就可合并数据源。
  • 能够大幅减少过程控制语句的代码块,使代码的可读性和可维护性大幅提高。
  • 任何对象或数据源都可以定制实现LINQ适配器,为数据交互带来真正方便。

LINQ使用:

第一种方法:

查询语句,类似SQL语法

常见子句:

  • from子句:指定查询操作的数据源和范围变量
  • where子句:筛选元素的逻辑条件,返回值是一个bool类型
  • select子句:指定查询结果的类型和表现形式
  • orderby子句:对查询结果进行排序(升序或者降序)
  • group子句:对查询结果进行分组
  • into子句:提供一个临时标识符,该表示可充当对join/group/select子句结果的引用
  • join子句:连接多个查询操作的数据源
  • let子句:引入用于存储查询表达式中的子表达式结果的范围变

示例

            int[] nums = { 1, 2, 4, 5, 6, 7 };//数据源
            //linq的第一种写法
            var list1 = from a in nums where a%2 == 0 orderby a descending select a;
            var list11 = from a in nums where a % 2 == 0 orderby a descending select a/2;
            //必须以from开头。以select或者group by结尾。
            //其中a为nums中的元素, in 数据源。中间以各种条件连接,比如where 、order by 结尾select 查出这个筛选之后的a。
            foreach (var item in list1) 
            {
                Console.Write(item);
            }
            Console.WriteLine("\n");
            foreach (var item in list11)
            {
                Console.Write(item);
            }
            Console.WriteLine("\n");
结果

C#LINQ_第1张图片

第二种方法

常见方法:

Count()、Where()、OrderBy()【默认是升序】OrderByDescending()、Select()、GroupBy()、等等。方法语法中一般结合lambda表达式(委托delegate和匿名的结合)来使用。

示例

            //linq的第二种写法
            Console.WriteLine("linq的第二种写法");
            var list2 = nums.Where(a => a % 2 != 0).OrderByDescending(a=>a);
            var list21 = nums.Select(a => a/2).Where(a => a % 2 != 0).OrderByDescending(a => a);
            foreach (var item in list2)
            {
                Console.Write(item);
            }
            Console.WriteLine("\n");
            foreach (var item in list21)
            {
                Console.Write(item);
            }
            Console.WriteLine("\n");
            //计算1/nums并按计算大小降序进行排列
            var list3 = nums.Where(a => a % 2 == 0).OrderByDescending(item => 1/item);
            foreach (var item in list3)
            {
                Console.Write(item);
            }
            Console.WriteLine("\n");
            string[] strs = { "胡广成", "张国荣", "刘德华", "故国冰封", "万里雪飘", "AAA", "胡翰轩", "张杰" };
            var list4 = strs .Select(item => item).GroupBy(item => item.Length);//分组   分组依据是字符串的长度
            foreach (var item in list4)
            {
                Console.WriteLine("----------------");
                Console.WriteLine($"分组字段是{item.Key}");  //item.Key是分组依据 显示分组字段
                foreach (var items in item)//内层循环遍历分组项
                {
                    Console.WriteLine(items);
                }
            }
            Console.ReadKey();
结果

C#LINQ_第2张图片

你可能感兴趣的:(C#,c#,linq,开发语言)