zoukankan      html  css  js  c++  java
  • LINQ 初步了解

    .NET Framework 3.5的新特性 Language Integrated Query,即语言集成查询 查询 和语言结合
    关系数据库里的信息
    使用的XML文档
    保存在本地的DataSet
    内存中的List列表 

    LINQ中最基本的数据单元是sequences和elements。
    一个sequence是实现了IEnumerable<T>的对象,而一个element是sequence中的每一个元素。
    如下,字符串数组就是一个sequence,数组中单个元素则是elements。

    查询运算符:用来转换sequence的方法。一个典型的查询运算符接收一个输入sequence并输出一个转换之后的sequence。在System.Linq.Enumerable类中,总共定义了40来个查询运算符----全部用扩展方法来实现,他们被称
    为标准查询运算符。

    一个查询则是由查询运算符来转换sequence的一个表达式,最简单的查询由一个input sequence和一个查询运算符组成。
    string[] names = { "Tom", "Dick", "Harry" };

    // 获取所有长度大于等于4的名字
    IEnumerable<string> filteredNames = System.Linq.Enumerable.Where(
    names, n => n.Length >= 4);

    foreach (string n in filteredNames)
    Console.WriteLine(n);
    因为查询运算符是以扩展方法实现的,所以我们可以直接在names对象上调用Where:

    // 获取所有长度大于等于4的名字
    IEnumerable<string> filteredNames = names.Where(n => n.Length >= 4);

    我们可以通过使用var关键字来进一步简写我们的query:

    var filteredNames = names.Where(n => n.Length >= 4);
    注:在初学LINQ时,var关键字可能会影响可读性,特别是在没有IDE和智能提示的时候,因而如果可能,我会在本系列的开始尽量使用确切的返回类型。

    大部分查询运算符都接受一个lambda表达式作为参数,lambda表达式决定了查询的行为特性和结果。在上例中,lambda表达式为:

    n => n.Length >= 4
    Lambda表达式格式为:(parameters) => expression-or-statement-block

    在这里的lambda表达式中,输入参数n对应了names数组的每一个元素,其类型为string。Where运算符要求lambda表达式返回一个bool值,当结果为true时,表示该元素会包含在输出sequence中。这里是Where运算符的方法签
    名:

    public static IEnumerable<TSource> Where<TSource>
    (this IEnumerable<TSource> source, Func<TSource, bool> predicate)
    下面的query获取所有包含字母a的名字:

    string[] names = { "Tom", "Dick", "Harry" };
    IEnumerable<string> filteredNames = names.Where(n => n.Contains("a"));

    foreach (string name in filteredNames)
    Console.WriteLine(name); // Harry

    到现在为止,我们通过使用扩展方法和lambda表达式来建立了LINQ query。我们很快就能看到,这种策略非常的灵活和适合query的创建,因为我们可以级联的使用查询运算符。通常,这种方法被称为LINQ方法语法(英文著作
    中称为fluent syntax)。C#还提供了另外一种书写query的语法,叫做查询表达式语法(英文著作中称为query expression syntax),下面是一个用查询表达式语法建立的query,让我们先睹为快:

    IEnumerable<string> filteredNames = from n in names
    where n.Contains("a")
    select n; // Harry
    方法语法和查询表达式语法是互为补充的 
     

  • 相关阅读:
    SQL Server 父子迭代查询语句,树状查询
    金山单词2003
    算算你的女友值多少钱?(精确新版)
    腾讯QQ2006 Fianl 海峰实用版(0114)┊
    私人保险箱 5.85 免费下载
    金山快译 2007 下载个人收藏专业版
    2007最新花之神匠代码 2月份更新 (3分钟搞定)
    金山词霸2007免费下载
    写给下一个她的男友
    SAP 价格条件表PRCD_ELEMENTS
  • 原文地址:https://www.cnblogs.com/mmbbflyer/p/7721953.html
Copyright © 2011-2022 走看看