LinQ 是 .net framework 3.5的技术,对集合的查询和操作十分方便,结合LinQ Provider ,可以更方便操作XML和SQL(或Entity)。
LinQ有6样常用的特性:
- 自动属性
- 隐形类型
- 对象集合初始器
- 匿名类
- 扩展方法
- Lambda表达式
自动属性就是,之前实体类的写法,需要有字段和属性赋值,现在都省略了,写成:
public class users{ public int uid{get;set;} }
隐形类型就是,可以使用类似javascript的var来声明变量了,编译时赋值后,就不能改变数据类型。
var i = 123; var x; x="abc";
对象集合初始器就是,类似以前重载构造函数,用构造函数赋值的方法,现在更方便的做法:
//简单的 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);
时间: 2024-10-04 06:42:24