1,学习LinQ

概要:

       学习Linq的第一篇,认识什么是Linq,了解LQ相关的知识和一个简单的LQ例子。

  此系列是我的学习笔记,来源:http://www.cnblogs.com/lovecherry/

内容:

       LinQ是基于关系数据的语言集成查询,用于以对象形式管理的关系数据的查询功能。

       LinQ包括:Linq to sql,Linq to xml,Linq toobjects,Linq to dataset等。

       这里只学习Linq to sql,我将这个简写为LQ。纯属个人行为,不知道这样是不是规范?!

       其中LinQ中Linq to objects是核心,Linq to xml 也有广泛的应用。而Linq to sql我认为是最易入门和常用的。

LinQ是在c#3.0下的,所以必须是在vs2008或vs2010下学习。本人用的是vs2010。

在这里要认识一些c#3.0里新曾的一些东西:

1,Var声明:新增的东西,声明隐含类型局部变量,因为是隐含类型,所以声明时必须赋值,让系统判断类型。这个用法跟JS中差不多。

2,LQ中常用的匿名类型:

       VarUser=new {Login=”admin”,PWD=123456};//无须显示定义

3,扩展方法:

       扩展方法只能在静态类定义且是静态方法。这个用到的时候再说。

4,Lambda表达式:

       (参数列表)=>表达式或语句块

一个简单的例子:

 

       在vs2010(或vs2008)中新建一个consoleApplication,会发现这时的.cs文件会比vs2005中多个引用空间:using System.Linq;。这个是在c#3.0后才有的。

       由于代码很少,都贴了:

       usingSystem;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace SQDemo1conApp

{

   public class Person

    {

       public string username { get; set; }

       public int age { get; set; }

    }

   class Program

    {

       static void Main(string[] args)

       {

           var persons = new List<Person> {

           new Person {username = "a", age=19},

           new Person {username = "b", age=20},

           new Person {username = "c", age=21}

           };

           //select username.ToUpper() from persons where age>=20

           //var selectperson = from p in persons where p.age >= 20 selectp.username.ToUpper();

           var selectperson = persons.Where(p => p.age >= 20).Select(p =>p.username.ToUpper());

           foreach (var p in selectperson)

                Console.WriteLine(p);

           Console.ReadKey();

       }

    }

}

其中varselectperson = from p in persons where p.age >= 20 selectp.username.ToUpper();

等同于varselectperson = persons.Where(p => p.age >= 20).Select(p =>p.username.ToUpper());

它的意思就类似与T-sql中的select username.ToUpper() frompersons where age>=20

注意=>和>=是不同的,代表不同的意思。

LQ据说可以实现T-sql 90%功能,只有部分复杂功能难以实现。LQ的select是写在后面的,这个跟T-sql中不大一样。

  这里下载源码

原文地址:https://www.cnblogs.com/yaoge/p/1816693.html