zoukankan      html  css  js  c++  java
  • Linq的语法以及常用的扩展方法

    Linq的基础

    •LINQ(读音link):Linq To SQL(过时)、Linq To Object、Linq To XML、Linq To entity,目的:以统一的方式对数据进行操作。看起来非常像SQL语句,但是和SQL无关。
    •var关键字,var类型用来简化类型的声明,var i = 2,并不说明i是无类型的,编译器会自动根据右边的值推断(这叫类型推断)var代表的值。var只能用来语句中,不能用在返回值、参数列表等场合。
    •匿名类型,var s = new { Name = "jim", Sex = M },在后面的代码中就能用s.Name 这样的方式引用属性了。匿名类型不是动态类型,最终仍然是编译成一个类,用Reflector查看。如果编译器遇到了一个属性完全一致的匿名类型,则会重用这个类型,而不是每次都创建一个新的类型。也是类型推断的一种表现。
    • string name = "ljw"; int age = 30;var p = new { name,age, name.Length};默认命名属性。
    •如果推断的属性名冲突,则必须显式指定var p = new { name.Length ,Length2="C#".Length}
    •如果写程序的时候调用不了Linq的方法,就看看是否using了system.Linq。
    复制代码
    1  Table1TableAdapter adapter = new Table1TableAdapter();
    2             /*
    3             强类型DataSet与Var.Database1DataSet.Table1DataTable dt = adapter.GetData();
    4             强类型DataSet与Var.Database1DataSet.Table1Row row = dt[0];
    5              */
    6             var dt = adapter.GetData();
    7             var row = dt[0];
    8             var aa = row.aa;
    复制代码

    排序,分组
    orderby person.Age descending

    1 int[] values = { 1, 2, 5, 2, 3, 5, 5, 3, 4, 3, 3 };
    2             var result = from i in values
    3                             //按i进行排序,g表示分组
    4                          group i by i into g
    5                          select g.Key;

    扩展方法

    下面的方法都是IEnumerable<T>的扩展方法:

    Average计算平均值; Min最小元素;Max最大元素;Sum元素总和; Count元素数量;

    Concat连接两个序列;//相当于sql的Unoin all

    Contains序列是否包含指定元素;

    Distinct取得序列中的非重复元素;

    Except获得两个序列的差集;

    Intersect获得两个序列的交集;

    First取得序列第一个元素;

    Single取得序列的唯一一个元素,如果元素个数不是1个,则报错;

    FirstOrDefault 取得序列第一个元素,如果没有一个元素,则返回默认值;

    Linq只能用于范型的序列,IEnumerable<T>,对于非范型,可以用Cast或者OfType

    IEnumerable的方法:

    Cast<TResult>:由于Linq要针对范型类型操作,对于老版本.Net类等非范型的IEnumerable序列可以用Cast方法转换为范型的序列。ArrayList l; IEnumerable<int> il = l.Cast<int>();

    OfType<TResult>:Cast会尝试将序列中所有元素都转换为TResult类型,如果待转换的非范型序列中含有其他类型,则会报错。OfType则是只将序列中挑出指定类型的元素转换到范型序列中。

    转自https://www.cnblogs.com/MNKJ/p/4263604.html

  • 相关阅读:
    tera term通过ttl脚本 自动连接服务器
    shell脚本生成xml文件
    MarkDown语法练习笔记
    linux nkf 日文编码转换命令[转载]
    Shell脚本传递带有空格的参数[摘录自网络]
    JavaScript思维导图—函数基础
    JavaScript思维导图—运算符
    JavaScript思维导图—数组
    JavaScript思维导图—流程控制
    JavaScript思维导图—正则表达式
  • 原文地址:https://www.cnblogs.com/lvaicmr/p/7886279.html
Copyright © 2011-2022 走看看