当前位置:编程技术网 > 技术文章 > 一起分享.net 3.5 之 Linq序列教程 > 文章详细内容

一起分享.net 3.5 之 Linq序列教程(1):概述、发展历史、入门

一、ling的概念
  1、LINQ( Language Integrated Query )即语言集成查询
  2、LINQ 就是是使用相同风格的代码去查询对象,查询和操作xml、数据库。
  3、LINQ 主要包含以下三部分:
  4、LINQ to Objects 主要负责对象的查询
  5、LINQ to XML 主要负责 XML 的查询
  6、LINQ to SQL 主要负责数据库的查询


二、linq能解决的问题
  1、面向对象与数据访问两个领域长期分裂,很多对象关系模型框架就是设计来解决这个问题,比如NHibernate 、Hibernate等。 LINQ也可以当 对象关系模型使用。
  2、使用了linq后对数据库的编程,基本也就不需要写sql,那同时也就不会有以下2个问题
      1)、编程语言中的数据类型与数据库中的数据类型形成两套体系
      2)、SQL 编码体验落后
            1>、没有智能感应
            2>、没有严格意义上的强类型和类型检查
  3、对数据库的操作和对xml操作的方法不一样,使用linq可以统一操作
  4、对 对象的查询, 从来没有过, 要查找只有遍历,linq也可以使用对对象的操作。

 

三、linq的发展历史
  1、最初由 Anders Hejlsberg 构思,最初的研究计划称为 Cω
  2、2005年9月 – 第一个为 C# 2.0 开发的技术预览版在当年的 PDC(微软开发者大会)上发布
  3、2005年11月 – 更新至社区预览版(C# 2.0)
  4、2006年1月 – 第一个为 VB 8.0 开发的技术预览版发布
  5、2007年11月19日 – LINQ作为 .NET Framework 3.5 的一部分正式发布

 

四、Linq的工作环境
 vs2008、.NET Framework 3.5 、C# 3.0

 

五、linq入门示例1 : 将数组中偶数取出来按大小排序

int[] intarr = { 2, 4, 5, 2, 6, 8, 9, 434324, 23, 55, 64, 1, 22, 34 };

//1、 使用传统方式实现【将数组中偶数取出来按大小排序】

List<int> lst = new List<int>();

foreach (var i in intarr)

{

    if (i % 2 == 0)

        lst.Add(i);

}

 

lst.Sort();

 

foreach (var item in lst)

{

    Console.WriteLine(item);

}

 

//2、 使用 Linq中的查询语句方式实现【将数组中偶数取出来按大小排序】

var result = from i in intarr

             where i % 2 == 0

             orderby i

             select i;

 

foreach (var item in result)

{

    Console.WriteLine(item);

}

 

//3、 也可以使用 Linq中的查询方法方式来实现【将数组中偶数取出来按大小排序】

var result = intarr.Where(i => i % 2 == 0)

    .OrderBy(i => i)

    .Select(i => i);

 

foreach (var item in result)

{

    Console.WriteLine(item);

}

 


六、linq入门示例2 : 提取ClassID=1的学生,按年龄排序

var stus = new List<Stu> {

    new Stu{ID=1, Name="tom", Age=22, ClassID=1},

    new Stu{ID=2, Name="jim", Age=20, ClassID=2},

    new Stu{ID=3, Name="jike", Age=21, ClassID=1},

    new Stu{ID=4, Name="heli", Age=25, ClassID=2}

};

 

//1、 使用传统方式实现【提取ClassID=1的学生,按年龄排序】

List<Stu> lst = stus.FindAll(delegate(Stu s)

    {

        return s.ClassID == 1;

    }

);

//

lst.Sort(delegate(Stu s1, Stu s2)

    {

        return s1.Age.CompareTo(s2.Age);

    }

);

 

foreach (var item in lst)

{

    item.Print();

}

 

//2、 使用 Linq中的查询语句方式实现【提取ClassID=1的学生,按年龄排序】

var result = from s in stus

             where s.ClassID == 1

             orderby s.Age

             select s;

 

foreach (var item in result)

{

    item.Print();

}

 

//3、 也可以使用 Linq中的查询方法方式来实现【提取ClassID=1的学生,按年龄排序】

var result = stus.Where(s => s.ClassID == 1)

    .OrderBy(s => s.Age)

    .Select(s => s);

 

foreach (var item in result)

{

    item.Print();

}

 

点击下载 作者|来源:原创(17fx.net)发表于:2009-5-19 20:03:01
上一篇 没有了