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<string> selectQuery =
                from str in strArray
                where str.Length >6 && str.IndexOf('非') > -1
                select str;

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

运行结果:
运行结果

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

默九思

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值