语言集成查询 (LINQ) 为 C# 和 Visual Basic 提供语言级查询功能和高阶函数 API,让你能够编写具有很高表达力度的声明性代码。
LINQ 的历史
从语言方面的进化
–委托
–匿名方法
–Lambda表达式
–Linq查询表达式
LINQ是什么
LinQ目的
面向对象技术诞生以来并没有解决降低访问和整合信息数据的复杂度的问题。其中两个最主要访问的数据源与数据库和 XML 相关。
使用LINQ的目的是为了提供一个解决对象关系映射问题的方案,同时简化对象和数据源的交互。LINQ最终发展成为一个通用语言集成查询的工具包。
LINQ正如它的名字“集成查询语言”的含义一样,它提供给程序员一个统一的编程界面。程序员不需要关心他将要操作的将是关系数据库还是XML,甚至是远程的对象,它都采用同样的查询方式。就如同通过T-SQL操纵数据库一样,不管是Oracle,SyBase还是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
实现 IEnumerable 或 IQueryable 接口的对象都可使用LINQ操作
LINQ的进化路径
委托
C#public delegate void Cal(int x, int y);
private void Add(int x ,int y)
{
MessageBox.Show((x + y).ToString());
}
private void btnCall_Click(object sender, EventArgs e)
{
Cal cal = new Cal(Add);
cal(2, 3);
}
匿名方法
C#public delegate void Cal(int x, int y);
private void btnCall_Click(object sender, EventArgs e)
{
Cal cal = delegate (int x, int y)
{
MessageBox.Show((x * y).ToString());
};
cal(3, 4);
}
Lambda 表达式
Lambda 表达式是一个可用于创建委托或表达式树类型的匿名函数。 通过使用 lambda 表达式,可以写入可作为参数或返回为函数调用值的本地函数。 Lambda 表达式对于编写 LINQ 查询表达式特别有用。
若要创建 Lambda 表达式,必须在 Lambda 运算符 => 左侧指定输入参数(如果有),然后在另一侧输入表达式或语句块。 例如,lambda 表达式 x => x * x 指定名为 x 的参数并返回 x 的平方。
C#public delegate void Cal(int x, int y);
private void btnCall_Click(object sender, EventArgs e)
{
Cal cal = (x, y) =>
{
MessageBox.Show((x * y).ToString());
};
cal(20, 3);
}
本文作者:rick
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!