linQ学习笔记之一

时间:2023-03-08 16:42:27

linq解决的问题

1.编程语言中的数据类型与数据库中的数据类型形成的两套体系

2.SQL编码体验落后

3.SQL和XML都有各自的查询语言,而对象没有自己的查询语言

linq简单的集合查询和foreach的区别

 int[] arr = { 123, 12, 1, 123, 154, 15, 5456, 12, 5, 5, 1516 };
//ArrayList re = new ArrayList();
//for (int i = 0; i < arr.Length; i++)
//{
// if (arr[i] > 50)
// {
// re.Add(arr[i]);
// }
//} //for (int a = 0; a < re.Count; a++)
//{
// System.Console.WriteLine(re[a]);
// System.Diagnostics.Debug.Write(re[a]);
//}
//Linq查询集合中大于50的数
IEnumerable ie = arr.Select(p=>p).Where(p=>p>50);
//输出语句
IEnumerator resilt = ie.GetEnumerator();
while (resilt.MoveNext())
{
Console.WriteLine(resilt.Current);
}

拓展方法

/// <summary>
/// 创建一个静态的类,拓展类
/// </summary>
public static class ExtraClass
{
/// <summary>
/// 拓展方法 必须是静态的
/// </summary>
/// <param name="s">对哪一个属性进行的拓展</param>
/// <returns></returns>
public static string ToPascal(this string s)
{
return s.Substring(0, 1).ToUpper() + s.Substring(1).ToLower();
}
//为IEnumerable提供输出方法
public static void Print(this IEnumerable ie)
{
IEnumerator IEU = ie.GetEnumerator();
while (IEU.MoveNext())
{
Console.WriteLine(IEU.Current);
}
} }
private void button1_Click_1(object sender, EventArgs e)
{
//拓展方法
string a = "asdfgZXCVV";
//转换成大写
Console.WriteLine(a.ToUpper());
//转换成小写
Console.WriteLine(a.ToLower());
//首字母大写,其他小写(拓展方法)
Console.WriteLine(a.ToPascal()); }
1.拓展方法是一种特殊的静态方法
2.拓展方法必须在静态类中定义
3.拓展方法的优先级低于同名的类方法
4.除非必须不要滥用拓展方法

Lambda表达式的由来

   //将字符串的首字母转化为大写的方法
public string ToPascal(string s)
{
return s.Substring(0, 1).ToUpper() + s.Substring(1).ToLower();
} private void button2_Click(object sender, EventArgs e)
{
//Lambda来源
//.net FrameWork 1.0委托---函数指针
Excsd es = new Excsd(ToPascal);//委托指向方法ToPascal
Console.WriteLine(es("sadsada"));
//.net FrameWork 2.0匿名方法
Excsd ed = delegate(string s)
{
return s.Substring(0, 1).ToUpper() + s.Substring(1).ToLower();
};
Console.WriteLine(ed("sadsada"));
//.net FrameWork 3.5 匿名方法
Excsd exd = (s) => (s.Substring(0, 1).ToUpper() + s.Substring(1).ToLower());
Excsd excd = (s) =>s.Substring(0, 1).ToUpper() + s.Substring(1).ToLower();
Console.WriteLine(exd("asdsa"));
}