LINQ能够解决的问题
.NET平台开发中一直存在的情况:
-
面向对象编程语言与数据库访问方法长期分离,以嵌入式方式开发
嵌入式SQL语句没有任何提示,很容易出错
-
编程语言中的数据类型与数据库中的数据类型完全是两套体系
例如:C#中字符串string在SQL中使用varchar/Nvarchar/char来表示
-
SQL和XML都有各自的查询语言,而对象没有自己的查询语言
例如:要从一个List< T>集合或者数组中找到符合要求的元素非常困难。
LINQ查询重点解决以上问题
LINQ是什么
LINQ(Language Integrated Query)
语言集成查询
-
是微软公司提供的一项新技术,能够将查询功能直接引入到C#、VB.NET等编程语言中
-
查询操作可以通过编程语言自身来表示,而不是嵌入字符串SQL语句
LINQ的组成
-
LINQ to Objects 主要负责对象的查询
-
LINQ to XML 主要负责XML的查询
-
LINQ to ADO.NET 主要负责数据库的查询
-
LINQ to SQL (目前已经没人使用)
-
LINQ to DataSet
-
LINQ to Entities (重点学习)
-
LINQ的命名空间
-
System.Linq;该命名空间已经由系统自动引入
-
因此微软默认建议多使用Linq技术查询
不采用LINQ技术的查询
static void Main(string[] args)
{
//1.从数组中拿到所有的偶数
int[] nums = { 1, 22,18,2, 3, 5, 7, 6, 8, 9, 23, 12 };
List<int> list = new List<int>();
foreach (int item in nums)
{
if (item%2==0)
{
list.Add(item);
}
}
list.Sort();
list.Reverse();
for (int i = 0; i < list.Count; i++)
{
Console.WriteLine(list[i]);
}
Console.ReadLine();
}
采用LINQ技术进行查询
int[] nums = { 1, 22, 18, 2, 3, 5, 7, 6, 8, 9, 23, 12 };
var list = from item in nums
where item % 2 == 0
orderby item descending
select item;
foreach (var item in list)
{
Console.WriteLine(item);
}