上节课我们说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();