【.NET】Linq几样特点

LinQ 是 .net framework 3.5的技术,对集合的查询和操作十分方便,结合LinQ Provider ,可以更方便操作XML和SQL(或Entity)。

LinQ有6样常用的特性:

  1. 自动属性
  2. 隐形类型
  3. 对象集合初始器
  4. 匿名类
  5. 扩展方法
  6. Lambda表达式

自动属性就是,之前实体类的写法,需要有字段和属性赋值,现在都省略了,写成:

public class users{
    public int uid{get;set;}  
}

隐形类型就是,可以使用类似javascript的var来声明变量了,编译时赋值后,就不能改变数据类型。

var i = 123;

对象集合初始器就是,类似以前重载构造函数,用构造函数赋值的方法,现在更方便的做法:

//简单的
User user = new User{id=1;name="bb";sex="";}
//嵌套的
User user = new User{
       new Address{city="深圳";qu="福田区";}
}
//用集合List的数组类
List<User> user = new List{
      new User{id=1;name="AA";sex=""},
      new User{id=2;name="BB";sex=""}      
}

匿名类就是,隐形类型+对象集合初始器

var u = new User{id=1;name="aa";sex=""};

扩展方法就是,静态方法都可以直接在变量上使用了,如:

//静态的公用方法
public static class common{
      public static bool IsNum(this sting s)
     {
            //判断是否数字
            Regex regex = new Regex(@"^[0-9]*$");
            return regex.IsMatch(s);
     }
}

//在别的类
public class a{
       public void abc()
       {
               string str1 = "123";
               str1.IsNum();
        }
}

Lambda表达式(冷打)就是,s=>s.IndexOf("abc") > 0       规则是(参数列表)=>表达式或查询语句,目前知道的可以用在委托和是Prodicate<T>的时候。

//委托
delegate int get1(int);
get1 bb = s=> s * s;
int j = bb(5); //j=25

//Prodicate<T>
List<int> temp = new List<int>{1,2,3};
var aa1 = temp.FindAll(s => s == 1);
原文地址:https://www.cnblogs.com/laokchen/p/5846762.html