读书人

简略的linq和正则表达式

发布时间: 2012-09-23 10:28:11 作者: rapoo

简单的linq和正则表达式

Linq 基础

语法:

在c#中的var是一个类型的简写,是根据右边进行类型的推导,只是编译器自动帮我们编译成右边的类型

Object 和var 的区别

Object 是一个类型

var还可以是匿名类型

匿名类型

Var p=new {Age=5,Name=”tom”};//p是匿名类型的对象

var 专门为匿名而生的

反编译后发现是只读的类型

Get方法

匿名类型的重用,如果成员的类型一样的话

那么会重用

Select 就是可以附加一下信息帅选出来

Where 是选出符合条件的信息

Orderby 排序

基于类型推断的考虑。所以Select 在最后

From在最前,这就是为什么和sql有点相反的原因

var e1 = from i in values

where i > 0

orderby i descending

select "[" + i + "]";

泛型委托

E1是什么类型取决于你的还回的是什么类型了

Let 是个申明临时变量在linq中

Linq 最终编译成委托类型,可以调用.net函数

匿名对象的学习总结

//var e2 = values.Except(values1);

var e2 = values.Intersect(values1);

values。Single();判断集合中有且只有一条信息

linq只能用于泛型的系列对于非泛型的

可以用Cast<int>

对于非范型,可以用Cast或者OfType转换成泛型

Cast用来将非泛型的系列转换成泛型的系列

Values.cast<int>

Oftype <int>是将是int 类型的转换成系列

挑着转换

Oftype是挑出符合类型的转换

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

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

Concat连接两个序列;//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则是只将序列中挑出指定类型的元素转换到范型序列中。

Linq的效率怎么样(小数据量、对性能要求不高的环节用linq很方便,而且延迟加载机制降低了内存占用,比一般人写的程序效率都高)

正则表达式

读书人网 >.NET

热点推荐