
最后,小编来简单的介绍一下lambda表达式,C#Lambda基本的表达形式:(参数列表) => {方法体},说明一下,参数列表中的参数类型可以是明确类型或者是推断类型,如果是推断类型,则参数的数据类型将由编译器根据上下文自动推断出来,Lambda 用在基于方法的 LINQ 查询中,作为诸如Where 和 Where 等标准查询运算符方法的参数。我们来看一个具体的例子:
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
public partial class Form1 : Form
{
//定义一个委托
public delegate string deleTransfer(string s);
public Form1()
{
InitializeComponent();
}
private void btnTest_Click(object sender, EventArgs e)
{
//拓展方法----
string strTest = "asdsad";
Console.WriteLine(strTest.ToLower());
Console.WriteLine(strTest.ToUpper());
Console.WriteLine(strTest.ToPascal());
Console.WriteLine("-------------------------------------");
//Lambda 来源
//.Net FrameWork 1.0委托---函数指针
deleTransfer trans = new deleTransfer(ToPascal); //委托指向方法ToPascal
Console.WriteLine(trans("abcdEFGH"));
//.net 2.0 匿名方法
deleTransfer transs = delegate(string s) { return s.Substring(0,1).ToUpper() + s.Substring(1).ToLower(); };
Console.WriteLine(transs("abcdEFGH"));
//.net 3.5 匿名方法
//deleTransfertransss = (s) => (s.Substring(0, 1).ToUpper() + s.Substring(1).ToLower());
deleTransfer transss = s =>s.Substring(0, 1).ToUpper() + s.Substring(1).ToLower();
Console.WriteLine(transss("abcdEFGH"));
}
//将字符串的首字母转化为大写字母的方法
public string ToPascal(string s)
{
return s.Substring(0,1).ToUpper() + s.Substring(1).ToLower();
}
}
public static class ExtraClass
{
//拓展方法,特殊的静态方法
public static string ToPascal(this string s) //this后带类型,表名为该类型添加特殊的方法
{
return s.Substring(0,1).ToUpper() + s.Substring(1).ToLower();
}
public static string ToPascal(this string s, int len) //this后带类型,表名为该类型添加特殊的方法
{
return s.Substring(0,1).ToUpper() + s.Substring(1, len).ToLower() + s.Substring(len + 1);
}
}
它的发展过程是在C#1.0中使用的委托,C#2.0中添加了匿名方法,C#3.0中添加了lambda表达式。
小编寄语:该博文,小编主要简单的介绍了linq的一些基本知识,包括linq和sql的对比,linq的扩展方法以及lambda表达式,对linq的理解还不是很深刻,欢迎小伙伴们一起讨论交流,Linq的一个重要功能就是ORMapping思想的具体实现,ORMapping的思想就是实现编程的真正面向对象,使我们不用关心数据库,只需要关系实体类或实体集合类就行。项目进行中,未完待续......