> 文章列表 > C#基础学习--LINQ

C#基础学习--LINQ

C#基础学习--LINQ

什么是LINQ

对象获取数据的方法一直都是作为程序的一部分而设计的,然而使用LINQ可以很轻松的查询对象集合

LINQ提供程序

匿名类型

匿名类型经常用于LINQ查询的结果之中

匿名类型的对象创建表达式:

 

using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;namespace Csharpzuoye
{class Program{static void Main(){//必须使用var          匿名对象初始化语句var student = new { Name = "Mary Jones", Age = 19, Major = "History" };Console.WriteLine("{0},Age {1},Major:{2}", student.Name, student.Age, student.Major);}}
}

 投影初始化语句

除了对象初始化语句的赋值形式,匿名类型的对象初始化语句还有两种允许的形式:简单标识符成员访问表达式

 如果编译器遇到了另一个具有相同的参数名,相同的推断类型和相同顺序的匿名类型,它会重用这个类型并直接创建新的实例,不会创建新的匿名类型

方法语法和查询语法

 示例:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace Csharpzuoye
{class Program{static void Main(){int[] numbers = { 2, 5, 28, 31, 17, 16, 42 };var numsQuery = from n in numbers      //查询语法where n < 20select n;var numsMethod = numbers.Where(x => x < 20);  //方法语法int numsCount = (from n in numbers    //两种方法的组合where n < 20select n).Count();foreach (var x in numsQuery)Console.Write("{0} ", x);Console.WriteLine();foreach(var x in numsMethod)Console.Write("{0} ", x);Console.WriteLine();Console.WriteLine(numsCount);}}
}

 查询变量

LINQ 查询可以返回两种类型的结果--可以是一个枚举(可枚举的一组数据,不是枚举类型)它满足查询参数的项列表,也可以是一个叫做标量的的单一值,它满足查询条件的结果的某种摘要形式

 查询表达式的结构

查询表达式有查询体后的from子句组成

from子句

from子句指定了数据源使用的数据集合,它还引入了迭代变量

join子句

联结的语法如下:

   使用联结来结合两个或更多集合中的数据

    联结操作接受两个集合然后创建一个临时的对象集合,每一个对象包含原始集合对象中的所有字段

什么是联结

LINQ 中的 join 接受两个集合然后创建一个新的集合,每一个元素包含两个原始集合中的原始成员