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);
        }
    }
}

C#基础学习--LINQ_第1张图片

 投影初始化语句

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

C#基础学习--LINQ_第2张图片

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

方法语法和查询语法

C#基础学习--LINQ_第3张图片

 示例:

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 < 20
                            select n;

            var numsMethod = numbers.Where(x => x < 20);  //方法语法

            int numsCount = (from n in numbers    //两种方法的组合
                             where n < 20
                             select 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 查询可以返回两种类型的结果--可以是一个枚举(可枚举的一组数据,不是枚举类型)它满足查询参数的项列表,也可以是一个叫做标量的的单一值,它满足查询条件的结果的某种摘要形式

C#基础学习--LINQ_第4张图片

 查询表达式的结构

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

C#基础学习--LINQ_第5张图片

C#基础学习--LINQ_第6张图片

from子句

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

C#基础学习--LINQ_第7张图片

C#基础学习--LINQ_第8张图片

C#基础学习--LINQ_第9张图片

join子句

联结的语法如下:

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

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

C#基础学习--LINQ_第10张图片

C#基础学习--LINQ_第11张图片

什么是联结

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

你可能感兴趣的:(C#,C#)