LINQ-查询表达式

文章速览

  • 概述
  • 使用注意
  • 查询子句
  • 实例

概述

LINQ是一组技术的名称,这些技术建立在将查询功能直接集成到C#语言(以及Visual Basic和可能的任何其他.NET语言)的基础上。借助于LINQ,查询已是高级语言构造,就如同类、方法和事件等。
通过使用查询语法,可用最少的代码对数据源执行复杂的筛选、排序和分组操作,使用相同的基本查询表达式模式来查询和转换SQL数据库、ADO.NET数据集、XML文档和流以及.NET集合中的数据等。

使用注意

1、查询表达式可用于查询和转换来自任意支持LINQ的数据源中的数据。例如,单个查询可以从SQL数据库中检索数据,并生成XML流作为输出。
2、查询表达式使用许多常见的C#语言构造。
3、查询表达式中的变量都是强类型,一般不需要显示提供类型,编译器可以自行推断。
4、循环访问foreach语句中的查询变量前,不会执行查询。
5、编译时,根据C#规范中设置的规则将查询表达式转换为“标准查询运算符”方法调用。任何可以使用查询语法表示的查询都可以用方法语法表示,但查询语法更为简洁、易读。
6、编写LINQ查询的规则,尽可能使用查询语法,只在必须情况下才使用方法语法。
7、查询表达式可以编译为表达式目录树或委托,具体取决于查询所应用到的类型。其中,
IEnumerable查询编译为委托;
IQueryable和IQueryable查询编译为表达式目录树。

查询子句

子句 说明
from 指定数据源和范围变量
select 指定执行查询时返回的序列中的元素将具有的类型和形式
group 按照指定的键值对查询结果进行分组
where 根据一个或多个由逻辑“与”和逻辑“或”运算符(&&或||)分隔的布尔表达式筛选源元素
orderby 基于元素类型的默认比较器按升序或降序对查询结果进行排序
join 基于两个指定匹配条件之间的相等比较来连接两个数据源
let 引入一个用于存储查询表达式中子表达式结果的范围变量
into 提供一个标识符,它可以充当对join、group、或select子句的结果的引用

实例

查询字串数组中是否包含长度大于6并且包含”非“的字符串

        static void Main(string[] args)
        {
            string[] strArray = new string[] { "无眼界乃至无意识界", "无无明亦无无明尽", "非淡泊无以明志","非宁静无以致远" };
            //string[] str2 = Array.FindAll(str, s => (s.IndexOf("r") > 0));

//查询字串数组中是否包含长度大于6并且包含”非“的字符串
            IEnumerable selectQuery =
                from str in strArray
                where str.Length >6 && str.IndexOf('非') > -1
                select str;

            foreach (string str in selectQuery) {
                Console.WriteLine(str);
            }
            Console.ReadLine();
        }

运行结果:
运行结果

你可能感兴趣的:(C#宝典,linq,c#)