黑马程序员技术交流社区

标题: ❹ 黑马日记四:C#中LINQ新手学习 [打印本页]

作者: yy312232557    时间: 2011-11-7 22:04
标题: ❹ 黑马日记四:C#中LINQ新手学习
------------- Windows phone 手机开发ASP .NET培训、期待与您交流!----------------


微软在.NET Framework 3.5中提供了LINQ(Language Integrated Query)语言集成查询。它是集成在.NET编程语言中的一种特性。已成为编程语言的一个组成部分,在编写程序时可以得到很好的编译时语法检查,丰富的元数据,智能感知、 静态类型等强类型语言的好处。

那么我们怎么用呢?他的语法和我们写SQL 语句很类似,却有不一样。
下面我们来一起学习,

这里仅为测试学习,所以在控制台程序中测试,

首先,我们创建一个Person 类, 并且添加一些属性:

  1.     class Person
  2.     {
  3.         private string _name;
  4.         public string Name
  5.         {
  6.             get { return _name; }
  7.             set { _name = value; }
  8.         }

  9.         private int _age;
  10.         public int Age
  11.         {
  12.             get { return _age; }
  13.             set { _age = value; }
  14.         }

  15.         private string _gender;
  16.         public string Gender
  17.         {
  18.             get { return _gender; }
  19.             set { _gender = value; }
  20.         }

  21.     }
复制代码
然后,我们新写一个方法,用来造一些测试数据,
如下所示:
  1. private static List<Person> CreateList()
  2. {
  3. List<Person> list = new List<Person>();
  4. list.Add(new Person() { Name = "姚羽", Age = 25, Gender = "男" });
  5. list.Add(new Person() { Name = "边兵兵", Age = 18, Gender = "男" });
  6. list.Add(new Person() { Name = "传智播客", Age = 5, Gender = "非男非女" });
  7. list.Add(new Person() { Name = "黑马", Age = 1, Gender = "非男非女" });
  8. list.Add(new Person() { Name = "刘德华", Age = 45, Gender = "男" });
  9. list.Add(new Person() { Name = "林志玲", Age = 35, Gender = "女" });
  10. return list;
  11. }
复制代码
好了,前面的准备工作OK了,
我们简单看一下造好的数据是啥样的,这里因为是控制台程序,我们就采用调试的办法看一下数据,呵呵

根据调试的即时窗口,我们看到了插入的6条数据全部有了。

下面开始我们linq学习。

学习一:
普通的查询学习
  1. static void Main(string[] args)
  2. {
  3. List<Person> tempList = CreateList();
  4. var male = from p in tempList
  5. select p;

  6. foreach (Person item in male.ToList())
  7. {
  8. Console.WriteLine(item.Name + "|" + item.Gender + "|" + item.Age);
  9. }
  10. Console.ReadKey();
  11. }
复制代码

如上所示,我们在main函数中的代码段
var male = from p in tempList
select p;
这段语句就类似于我们在SQL Server中的   select * from tempList

下面我们简单的讲数据在控制台中展示一下,每条数据的字段之间用“|”隔开,
运行结果为:


很显然,这个时候我们拿到了所有的数据。

学习二:
带条件的linq查询
  1. var male = from p in tempList
  2. where p.Gender == "女"
  3. select p;
复制代码
查询性别为“女”的数据,结果是只有林志玲一条


查询性别为“非男非女”且岁数为5岁的数据, 如果在SQL Server中则为: Select * from tempList Where Gender=' 非男非女' and Age = 5
  1. var male = from p in tempList
  2. where p.Gender == "非男非女" && p.Age == 5
  3. select p;
复制代码


如上图中的结果,就不多解释。


学习三:
查询返回结果中含有类似于C#聚合函数Count/Sum/Min/Max/Avg的例子

  1. List<Person> tempList = CreateList();
  2. var male = (from p in tempList
  3. select p.Age).Max();
复制代码
其实类似这样的还有很多,这里我也是初学,网上看见的说还有什么
匿名类型,
Join和Order By,

Lambda表达式和Lambda表达式树
等等,

大家一起去学习和研究吧

-------------
Windows phone 手机开发ASP .NET培训、期待与您交流!----------------


该贴已经同步到 yy312232557的微博




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2