zoukankan      html  css  js  c++  java
  • LINQ学习笔记(一)

    LINQ,语言集成查询(Language Integrated Query)是一组用于C#和Visual Basic语言的扩展。

    它允许编写C#或Visual Basic代码以查询数据库相同的方法操作内存数据。

    它在.Net Framework的System.Linq。命名空间。

    它是在.NET Framework 3.5 出现的技术,所以在创建新项目的时候必须要选3.5或者更高的版本。

    否则无法使用,在更高的版本创建项目时会自动包含System.Linq的命名空间。

    LINQ语法和SQL语法非常相似,除了先后顺序。

    LINQ以from开头的原因是为了IDE的智能感知。在2005年的VB9 CTP版本中,那时候的LINQ查询语法就

    select关键字在前面的,但是select关键字在前面,在智能感知(Intelisence)时候就很头大。经过微软IDE

    组的权衡,确定把from关键字放在最前面。

    更详细的解释,

    假设你要书写这样的代码:Select p.Name,p.Age From p In persons where xxx 代码是一个个字符输入的。

    我们在写到p in persons 之前,p的类型是无法推测的,所以写Select p. 的时候,Name之类的属性不会弹出智能提示来。

    这样就需要先去写From这句,再回来写Select。

    LINQ是Visual Studio 2008中的领军人物,借助于LINQ技术,我们可以使用一直类似SQL的语法来查询任何形式的数据。

    一般来说,这类查询语法的一个重要特点就是可以并行化执行。虽然有些情况下并行可能会带来一些问题,但这种情况非常少见。

    这样也就水到渠成地引出了PLINQ这个并行处理的LINQ类库。

    PLINQ原名是Parallel LINQ,支持XML和内存中数据集合,执行与远程服务器上的查询语句(例如LINQ to SQL)显然无法实现这个功能。

    将LINQ语句转换为PLINQ语句极为简单,只需要在查询语句中From子句所指定的数据源的最后添加AsParallel()即可。随后Where、OrderBy

    和Select子句将自动调用这个并行的LINQ版本。

    PLINQ可以以三种方式执行。第一种是是管道处理:一个线程用来读取数据源,而其他线程则用来处理查询语句,二者同步进行,虽然这个单一的

    消费线程可能并不那么容易与多个生成线程同步。不过若是能够仔细配置好负载平衡的话,任然会极大地减少内存占用。

    第二种模式叫做"stop and go",用于处理结果集需要被一次返回时(例如调用ToList、ToArray或对结果排序)的情况。在这种模式下,将依次完成

    各个处理过程,并将结果统一返回给消费线程。这个模式在性能上将优于第一种模式,因为它省去了用来保持线程同步所花费的开销。

    第三种模式叫做"inverted enumeration"。这种方法并不需要实现收集到所有的输出,然后再单一的线程中处理,而是将最终调用的函数通过ForAll

    扩展传递到每个线程中。这是目前为止最快的一种处理模式,不过这需要传递到ForAll中的函数是线程安全的,且最好不包含任何lock之类的互斥语句。

    LINQ语法

    1.

      from 临时变量 in 实现IEnumerable<T>接口的对象

      where条件表达式

      [orderby 条件]

      [group by 条件]

      select 临时变量中被查询的值

    2.

    实现IEnumerable<T>接口的对象.LINQ方法名(Lambda表达式)。

    如:

    string input = "hello world";

    int count=input.Count(w=>w=='o');//查询字母o出现的次数

    注意:能够使用LINQ的对象需要实现IEnumerable<T>接口。并且LINQ查询表达式是在最近

    一次创建对象时才会被编译的。

  • 相关阅读:
    b站漫画部门测试面经
    b站测试面经
    面试7
    面试6
    UI自动化测试:App的Webview页面元素左滑删除
    UI自动化测试:TouchAction & TouchActions区别
    UI自动化测试:获取元素隐藏属性
    iOS自动化测试元素定位
    UI自动化测试:测试异步场景的临时处理
    UI自动化测试:异常标签页切换
  • 原文地址:https://www.cnblogs.com/xiaoai123/p/6684114.html
Copyright © 2011-2022 走看看