日期:2014-05-20 浏览次数:20833 次
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很方便,而且延迟加载机制降低了内存占用,比一般人写的程序效率都高)
正则表达式
元字符
{}匹配的次数
[]匹配的范围
+匹配前面的一到多次
^匹配开始还表示非的意思
$匹配行的结束
– \d:代表一个数字,等同于[0-9]
– \D:代表非数字,等同于[^0-9]
– \s:代表换行符、Tab制表符等空白字符
– \S:代表非空白字符
– \w:匹配字母或数字或下划线或汉字,即能组成单词的字符
– \W:非\w ,等同于[^\w]
d:digital;s:space、w:word。大写就是“非”