sas6 02aq s2g2 uks6 xj5b 0aey jg6w n7hh y6ku nbdp

LINQ 笔记

标签:运费 2goe 摇钱树国际娱乐城

2015-8-3来源:C#应用人气:2690

LINQ 笔记

在LINQ开发当中var关键字显得特别的重要,当你声明一个var类型的变量时候,系统是不知道当前的类型,只有当你第一次为其赋值的时候,会根据其值来设置相应的数据类型,在LINQ查询通常不知道返回的类型,所以将查询到的结果放到var类型的变量当中 。

比如:

Var myInt=0;//在编译的时候会自动将其转成int类型

Var myBool=true;//编译的时候会将其转成bool类型

Var myString=”ime,marcheson”//编译时自动将其转成string类型

class LowNums

{

static void Main()

{

// A simple data source.

int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };

// Create the query.

// lowNums is an IEnumerable<int>

IEnumerable lowNums = from num in numbers

where num < 5

select num;

// Execute the query.

foreach (int i in lowNums)

{

Console.Write(i + " ");

}

}

}

通过上面红色标记的那行就可以看出标准的LINQ语句通常包含from in where select这几个关键字,大家是不是感觉跟sql的语句很像,但是倘若你真拿SQL的语句来用一定会非常懊恼,因为他看似一样但实际上却是完全不同的两种标准,我们 将LINQ查询操作符,通过表格的形式列出来,如下。

查询操作符

含义

from 、in

用于定义任何LINQ表达式的主干,允许从合适的窗口中提取数据子集

where

用于定义从一个容器里取出哪些项的限制条件

select

用于从容器中选择一个序列

join、on、equals、into

基于指定的键来做关键操作。记住,这些“关联”不必与关系PRoducts orderby p.Name ascending select p;

逆序:

Var subset=from p in products orderby p.Name descending select p;

Enumerable还提供了一个扩展方法,可以对两个(或多个)LINQ查询的数据进行合并(union)比较(difference)、连接(concatenation)和交叉(intersection)。

Except()扩展方法,它返回含两个容器不同之处的LINQ集合集。下面的函数返回的只有一个”Yugo”

static void DisplayDiff()

{

List<string>myCars=new List<string>{"Yugo","Aztec","BMW"};

List<string> yourCars = new List<string> { "BMW", "Saab", "Aztec" };

var carDiff = (from c in myCars select c).Except(from c2 in yourCars select c2);

Console.WriteLine("Here is what ou don't have,but I do:");

foreach (string s in carDiff)

Console.WriteLine(s);

}

Intersect()方法返回两个容器中共同的数据项。将上面的程序修改一下,返回的将是”Aztec”、”BMW”

static void DisplayIntersection()

{

List<string> myCars = new List<string> { "Yugo", "Aztec", "BMW" };

List<string> yourCars = new List<string> { "BMW", "Saab", "Aztec" };

var carDiff = (from c in myCars select c).Intersect(from c2 in yourCars select c2);

Console.WriteLine("Here is what ou don't have,but I do:");

foreach (string s in carDiff)

Console.WriteLine(s);

}

Union()是将多个结果合并成一个,如果有相同的成员只返回一个结果。下面的程序返回的是Yugo、Aztec、BMW、Saab

static void DisplayUnion()

{

List<string> myCars = new List<string> { "Yugo", "Aztec", "BMW" };

List<string> yourCars = new List<string> { "BMW", "Saab", "Aztec" };

var carDiff = (from c in myCars select c).Union(from c2 in yourCars select c2);

Console.WriteLine("Here is what ou don't have,but I do:");

foreach (string s in carDiff)

Console.Wr