企业网站的建设目的包含什么,濮阳网站网站建设,网站域名备案资料,苏州优化seo介绍LINQ基础之前#xff0c;首说一下LINQ 的历史和LINQ是什么#xff0c;然后说一下学习 LINQ要了解的东西和 LINQ基础语法LINQ 的历史从语言方面的进化 –委托 –匿名方法 –Lambda表达式 –Linq查询表达式 上边这四个我会在下边一一解说 从时间方面的演进 –2004年 –2005… 介绍LINQ基础之前首说一下LINQ 的历史和LINQ是什么然后说一下学习 LINQ要了解的东西和 LINQ基础语法 LINQ 的历史 从语言方面的进化 –委托 –匿名方法 –Lambda表达式 –Linq查询表达式 上边这四个我会在下边一一解说 从时间方面的演进 –2004年 –2005年9月C#2.0的PDC上发布 –2005年11月C#2.0预览版 –2006年1月VB8.0预览版 –2007年11月.net 3.5发布 LINQ是什么 LINQ是语言级集成查询Language INtegrated Query LINQ是一种用来进行数据访问的编程模型使得.NET语言可以直接支持数据查询 LINQ的目标是降低访问数据的复杂度 LINQ可以用统一的方法访问不同类型的数据可以将数据作为对象使用 能够更好地与编程模型集成 可以在Visual Studio中进行智能提示 动态编程 LinQ目的 面向对象技术诞生以来并没有解决降低访问和整合信息数据的复杂度的问题。其中两个最主要访问的数据源与数据库和 XML 相关。 使用LINQ的目的是为了提供一个解决对象关系映射问题的方案同时简化对象和数据源的交互。LINQ最终发展成为一个通用语言集成查询的工具包。 LINQ正如它的名字“集成查询语言”的含义一样它提供给程序员一个统一的编程界面。程序员不需要关心他将要操作的将是关系数据库还是XML甚至是远程的对象它都采用同样的查询方式。就如同通过T-SQL操纵数据库一样不管是OracleSyBase还是SQL Server他们的Select语法都是一样的。 有了LINQ程序员便可以不再沉泥于不同的数据访问技术的学习。不管编程语言如何发展还是数据库技术的发展都不再需要程序员进行学习数据存储的效率由数据库厂商进行优化灵活的数据操作方法由数据访问中间件厂商提供程序员只需要编写业务逻辑。 LINQ包括 –LINQ to Objects 用于对象的查询 –LINQ to XML 对XML数据的查询 –LINQ to ADO.NET 对数据库的查询 LINQ to DataSets 数据集 LINQ to Entities ORM对象 LINQ to SQL 简易ORM框架 命名空间在System.Linq 实现 IEnumerableT 或 IQueryableT 接口的对象都可使用LINQ操作 LINQ框架图 委托 委托是一种定义方法签名的类型。 当实例化委托时您可以将其实例与任何具有兼容签名的方法相关联。 您可以通过委托实例调用方法。 委托用于将方法作为参数传递给其他方法。 事件处理程序就是通过委托调用的方法 public delegate void MyF1( int a); public void M1( int a) { Console .WriteLine(a); } MyF1 _myf1 M1 ; myf1(3); 与委托的签名由返回类型和参数组成匹配的任何可访问类或结构中的任何方法都可以分配给该委托。 方法可以是静态方法也可以是实例方法。 这样就可以通过编程方式来更改方法调用还可以向现有类中插入新代码。 只要知道委托的签名就可以分配您自己的方法。 匿名方法 我们在使用一个方法的时候 一般情况下我们会先把方法名、参数、返回值 写出来也称做命名方法 int MyMethod(int a){} 匿名方法的意思就是不用给定方法的名称。允许我们定义委托对象可以接收的代码 上边的委托我们可以写成 MyF1 _f delegate ( int a) { Console .WriteLine(a); }; _f(1); 例button的点击事件 通常的写法是 button1.Click button1_Click; void button1_Click(object sender, EventArgs e) { MessageBox.Show(Click! ) } 用匿名方法可以这样 button1.Click delegate( object obj1, EventArgs e) { MessageBox .Show(Click! ); }; Lambda 表达式 lambda 取代的匿名方法 Lambda 表达式是一个可用于创建委托或表达式树类型的匿名函数。 通过使用 lambda 表达式可以写入可作为参数或返回为函数调用值的本地函数。 Lambda 表达式对于编写 LINQ 查询表达式特别有用。 若要创建 Lambda 表达式必须在 Lambda 运算符 左侧指定输入参数如果有然后在另一侧输入表达式或语句块。 例如lambda 表达式 x x * x 指定名为 x 的参数并返回 x 的平方。 我们还是用上边的delegate例子 MyF1 _my1 a { Console .WriteLine(a); }; _my1(3); Button的点击事件可以写成这样 button1.Click (obj1, obje2) { MessageBox.Show(Click! ); }; Linq的基本语法 所有 LINQ 查询操作都由以下三个不同的操作组成 获取数据源。 创建查询。 执行查询。 查询表达式必须以 from 子句开头并且必须以 select 或 group 子句结尾。 在第一个 from 子句和最后一个 select 或 group 子句之间查询表达式可以包含一个或多个下列可选子句where、orderby、join、let 甚至附加的 from 子句。 还可以使用 into 关键字使 join 或 group 子句的结果能够充当同一查询表达式中附加查询子句的源。 int[] _scores new int [] { 97, 92, 81, 60 }; IEnumerable int _query from score in _scores where score 80 select score; foreach (int i in _query) { Console .WriteLine(i ); } 也可以这么写 IEnumerable int _query _scores.Where(x x 80); foreach (int i in _query) { Console .WriteLine(i ); } 下图显示了完整的查询操作。 在 LINQ 中查询的执行与查询本身截然不同换句话说如果只是创建查询变量则不会检索任何数据。 查询变量本身只是存储查询命令。 实际的查询执行会延迟到在 foreach 语句中循环访问查询变量时发生。 此概念称为“延迟执行” 转载于:https://www.cnblogs.com/li-peng/p/3512080.html