LINQ 查询简介

      Linq 是一跨各种数据源和数据格式的数据模型;它在查询是,始终是把它作为一种对象来操作,可以使用基本相同的编码模型查询和数据的转换XML,SQL,ADO数据等;

Linq查询的三个步骤

            在我们使用Linq来查询数据的时候我们都会按照这三个步骤来做,这是初学者应该记住
            1.创建数据源,这里的数据源可以是数组,集合,XML,SQL等数据库
            2.新建一个查询,
                如: from xxxx in xxxxx where xxx select;这一种结构,注意的是,必须以from开头,select结尾
            3.执行查询。在这里我们通常用到执行查询就是foreach来做,当然有for语句也可以,但后者在效率上没有前者好;

下面我们就用这个三个步骤来做一个示例:

using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Collections;
 6 
 7 namespace LINQDemo
 8 {
 9     class Program
10     {
11         static void Main(string[] args)
12         {
13             int[] number = new int[7] { 1, 3, 2, 4, 5, 6, 7 };  //create Datasourse
14             var n = from num in number where (num % 2 == 0) select num; // create Query
15             foreach (int a in n)   //Query execution
16             {
17                 Console.WriteLine(a.ToString());
18             }
19         }
20     }
21 }

执行的结果:2,4,6
首先建了一个int的数组作为数据源,其次创建了一个查询,最后执行了这个查询
现在来看看是怎么来执行这个过程的,如图所示:

每执行查询时,同要去查询的条件中找,符合条件的数据,大家下来可以一步步的调试,就要可以清楚的看到他的执行步骤了。

在上面一个示例是我们的数据源用的是一个int 的数组,刚来我们也说过数据源可以是XML ,数据库等
我们来看看XML:
using System.xml.Linq;
XElement element = XElement.Load(@"cao.xml");
用数据库作为数据源:
using System.Data.Linq;
DataContext dt = new DataContext(@"cao.mdf");
在以后的文章中我会讲到这两种数据源,这里就不做示例了;

接下来我们来看一个对ArrayList的一个查询示例:
新建一个Student类:

Code

接下来把这个实体添加到集合中,并查询:

ArrayList arr = new ArrayList();
 2             arr.Add(
 3                 new Student
 4             {
 5                 Name = "caodaiming",
 6                 Address = "sichuan",
 7                 Score = 49
 8             });
 9 
10             arr.Add(
11                 new Student
12                 {
13                     Name = "lishi",
14                     Address = "xi'an",
15                     Score = 44
16                 }
17                 );
18 
19             var querry = from Student student in arr select student;
20 
21             foreach (Student st in querry)
22 
23                 Console.WriteLine(st.Name + "-----" + st.Address + "-------" + st.Score);

在这里我们还是按照了查询的基本步骤来做的,没有什么变化,只要记住这个步骤就OK了。

现在说说查询的表达试吧,其实这与我们数据库的语句有一点像,数据库的语句是select .....from
.....,而Linq查询语句是from ..... in ..... where ......select
完全一我们SQL语句是相反的,Linq查询语句是面对象的查询语句,就是JAVA中Hibernate
中的HQL一样,都是一种面像对象的语句,如果有兴趣的朋友可以去对比一下这两者的不能之处;

LINQ学习入门教程(一)的更多相关文章

  1. Python学习入门教程,字符串函数扩充详解

    因有用户反映,在基础文章对字符串函数的讲解太过少,故写一篇文章详细讲解一下常用字符串函数.本文章是对:程序员带你十天快速入门Python,玩转电脑软件开发(三)中字符串函数的详解与扩充. 如果您想学习 ...

  2. 深度学习入门教程UFLDL学习实验笔记一:稀疏自编码器

    UFLDL即(unsupervised feature learning & deep learning).这是斯坦福网站上的一篇经典教程.顾名思义,你将在这篇这篇文章中学习到无监督特征学习和 ...

  3. TensorFlow和深度学习入门教程(TensorFlow and deep learning without a PhD)【转】

    本文转载自:https://blog.csdn.net/xummgg/article/details/69214366 前言 上月导师在组会上交我们用tensorflow写深度学习和卷积神经网络,并把 ...

  4. 深度学习入门教程UFLDL学习实验笔记三:主成分分析PCA与白化whitening

    主成分分析与白化是在做深度学习训练时最常见的两种预处理的方法,主成分分析是一种我们用的很多的降维的一种手段,通过PCA降维,我们能够有效的降低数据的维度,加快运算速度.而白化就是为了使得每个特征能有同 ...

  5. 深度学习入门教程UFLDL学习实验笔记二:使用向量化对MNIST数据集做稀疏自编码

    今天来做UFLDL的第二个实验,向量化.我们都知道,在matlab里面基本上如果使用for循环,程序是会慢的一逼的(可以说基本就运行不下去)所以在这呢,我们需要对程序进行向量化的处理,所谓向量化就是将 ...

  6. mySQL学习入门教程——4.内置函数

    四.内置函数: 包括了字符串函数.数值函数.日期函数.流程控制函数.其他函数(获取数据库信息)... 一.字符串函数[比较常用,需要掌握]1. concat(s1,s2,...,sn)   #把传入的 ...

  7. mySQL学习入门教程——2.创建表

    二.创建表 一.创建数据表的SQL语句模型(弱类型)CREATE TABLE [IF NOT EXISTS] 表名称(字段名1 列的类型[属性][索引],字段名2 列的类型[属性][索引],-字段名n ...

  8. 转:几十种编程语言的快速入门教程- learnxinyminutes.com

    原文来自于:http://top.jobbole.com/15551/ 这家网站的名称是 Learn X in Y minutes,包括了几十种编程语言的快速学习入门教程.打开几种编程语言来看了一下, ...

  9. WCF入门教程一[什么是WCF]--转载只为学习收藏

    一.概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分.由 .NE ...

随机推荐

  1. 错误处理:加载文件或程序集“ICSharpCode.SharpZipLib”

    解决方案:如果你的程序是2.0的,则删除 C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/中的所有的文件 如果是4.0的,删除C:/WINDOWS/Micr ...

  2. linxu c语言 fcntl函数和flock函数区别 【转】

    flock和fcntl都有锁的功能,但他们还有一点小小的区别: 1.flock只能加全局锁,fcntl可以加全局锁也可以加局部锁. 2.当一个进程用flock给一个文件加锁时,用另一个进程再给这个文件 ...

  3. 一步一步使用sklearn

    http://kukuruku.co/hub/python/introduction-to-machine-learning-with-python-andscikit-learn Hello, %u ...

  4. Apache搭建多个站点方法详解

    www.111cn.net 编辑:Bolshevik 来源:转载 Apache的虚拟主机是一种允许在同一台机器上配置多个不同站点的web服务器环境的,就是iis一样可以创建多站点了,但是apache需 ...

  5. xmind的第三天笔记

  6. 用无线网络进行Android开发中的调试

    1.手机具有root权限 2.安装adbWireless1.5.4.apk (下面有下载地址) 3.敲入命令:adb connect 192.168.1.127  后面是手机的IP地址 打开eclip ...

  7. Fresco好案例

    http://www.open-open.com/lib/view/open1436094840774.html

  8. hdu4632 Palindrome subsequence ——区间动态规划

    link:http://acm.hdu.edu.cn/showproblem.php?pid=4632 refer to: o(╯□╰)o……明明百度找的题解,然后后来就找不到我看的那份了,这位哥们对 ...

  9. c++内置函数---7

    原创博客:转载请标明出处:http://www.cnblogs.com/zxouxuewei/ 内置函数 调用函数时需要一定的时间和空间的开销.一般,函数调用包括5部分: 1.程序先执行函 数调用之前 ...

  10. HTML5学堂 全新的HTML5/前端技术分享平台

    HTML5学堂 全新的HTML5/前端技术分享平台 HTML5学堂是做什么的? HTML5学堂~http://www.h5course.com~由多名热爱H5的讲师们组成的一个组织.致力于构建一个前端 ...