LINQ不仅仅只是查询和var关键字的使用IEnumerable和IQueryable

上节课我们说LINQ虽然名称是查询语言。但是其实LINQ不只是用在查询。

比如我们下面的例子。

把一个字符串数组转换为整数类型。

string[] numbers = {“354″,”864″,”023″,”9” };

int[] nums = numbers.Select(s => Int32.Parse(s)).ToArray();

就是这么简单。一句代码就可以把字符串转换为整数。

from a in b 目的是b的数据 把其中一个元素放在a里面

where ….. 是对上面去到的数据 比如a 进行一个过滤 符合添加的 才获取 否则不适用

select 则是对a的这条记录 进行转换或者加工 或者去a里面的属性字段 或者搭配其他的变量 进行封装成新的对象。

所以我们的var query的值 是什么类型 和select有关。

我们使用linq有两种方式 一种是linq表达式 就是我们上一节课的那些表达式。还可以是lambda表达式。就是我们上面的numbers.Select(s => Int32.Parse(s)).

有些时候我们不知道IEnumerable的类型是什么。比如我们看下面的一个例子。下面是linqtosql的使用

我们创建添加一个linq to sql的类。然后使用服务器管理器。连接到我们查找学生的信息。

在select语句中。使用不同的值的时候。IEnumerable的T的类型就不一样。这个时候,我们不可能每次都去改变这个类型。所以我们完全可以使用var来代替。

string[] numbers = { “354”, “864”, “023”, “9” };

var nums = numbers.Select(s => Double.Parse(s)).ToArray();

var numsInt = numbers.Select(s => Int32.Parse(s)).ToArray();

我们把光标移动上去的时候,发现它的类型是IQueryable 其实它是从IEnumerable中继承过来的。

下面我们使用显示类型来试试。

IEnumerable numsInt2 = numbers.Select(s => Int32.Parse(s)).ToArray();

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注