zoukankan      html  css  js  c++  java
  • 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中不大一样。

      这里下载源码

  • 相关阅读:
    Hibernate 5.x 生成 SessionFactory 源码跟踪分析
    编译iftop
    Too many open files
    ffmpeg指定网卡
    abrt-hook-ccpp使用CPU太多
    ffplay播放时显示信息的意义
    Windows换行符和Linux换行符的替换
    directshow在WIN10下的一个BUG
    使用mirrordriver截屏
    mac xmind 激活
  • 原文地址:https://www.cnblogs.com/yaoge/p/1816693.html
Copyright © 2011-2022 走看看