1.LINQ操作数组
int[] arr = { 213, 454, 6477, 841, 1, 3, 46, 75, 692, 465, 134, 4156, 123, 456, 789 }; IEnumerable ie = arr.Select(p => p).Where(p => p > 50); IEnumerator result = ie.GetEnumerator(); while (result.MoveNext()) { Console.WriteLine(result.Current); }
2.LINQ扩展方法
1)扩展方法一定要静态
2)内部的方法权限不得高于当前的类的权限
3)this 表示对该属性进行扩展s
//静态类 public static class ExtraClass { // 静态特殊方法 public static string ToPascal(this string name) { return name.Substring(0, 1).ToUpper() + name.Substring(1).ToLower(); } public static string ToPascal(this string name, int len) { return name.Substring(0, 1).ToUpper() + name.Substring(1, len).ToLower(); }
}
3.Lambda表达式
//定义个委托 public delegate string deleTransfer(string s);//方法签名是字符串
//.net FrameWork 1.0 委托--函数指针 deleTransfer trans = new deleTransfer(ToPascal);//委托指向方法 listBox1.Items.Add("委托" + trans("zhangsan"));
//.net FrameWork 2.0 匿名方法 deleTransfer trans1 = delegate(string name) { return name.Substring(0, 1).ToUpper() + name.Substring(1).ToLower(); }; listBox1.Items.Add("匿名方法" + trans1("zhangsan"));
//.net FrameWork 3.5 匿名方法 (参数列表)=>{方法体} deleTransfer trans2 = s => s.ToUpper(); listBox1.Items.Add("3.5匿名方法" + trans2("zhangsan"));
//将字符串的手写字母转化为大写字母 public string ToPascal(string name) { return name.Substring(0, 1).ToUpper() + name.Substring(1).ToLower(); }
4.LINQ基本操作
List<string> persons = new List<string>(); persons.Add("zhangsan"); persons.Add("lisi"); persons.Add("wangwu"); persons.Add("wanglaobo"); persons.Add("huangxiaoming"); persons.Add("zhangweijian"); persons.Add("xietingfeng"); //输出所有的 //var result=persons.Select(p => p);
//输出首字母为w的人 //var result = persons.Where(p => p.StartsWith("w"));
//根据名称进行排序 var result = persons.OrderBy(p => p);
5.跳过
List<string> persons = new List<string>(); persons.Add("zhang san"); persons.Add("li si"); persons.Add("wang wu"); persons.Add("wang laobo"); persons.Add("huangxiaoming"); persons.Add("zhangweijian"); persons.Add("xietingfeng");
//跳过两个取出后面的值 var result=persons.Skip(2);