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);