简单的Linq查询语句
下面我来我大家介绍几种简单的查询方式。
1、简单语法
下面是一段LINQ查询语句
=============================================================================================
List<Select> list = (from tb in Model.SYS
select new Select
{
id = tb.ID,
text = tb.Name
}).ToList();
=============================================================================================
这个LINQ语句的第一个关键字是from,from后面加的是范围变量,范围变量后加in,后加上事先实例化的模型,然后点出数据的来源。
from后面的范围变量类似于for循环中的i变量,这里不需要明确范围变量指定具体的数据类型,因为编译器在执行这段代码时,可以根据里面的数据推断出范围变量的类型。
第二句先是关键字select查询,后面加上new的关键字,后面再加上事先封装好的要查询数据的数据类型类,这个数据类型类必须与前面List列表的数据类型类相同。
在select查询里面为事先封装好的数据类型类里面的字段赋上相应的值,
List是列表,LINQ语句要与List相等,所以在查询语句的最后面要加上一个ToList()将LINQ的隐式转换成另外一种类型。
2、匿名类型
匿名类型,在查询上不用去声明指定具体的数据类型,可以在执行代码时由编译器自动地去推断变量的数据类型。
=============================================================================================
var list = from tb in Model.SYS
select new Select
{
id = tb.ID,
text = tb.Name
};
=============================================================================================
var是匿名类型关键字,它用于定义数据类型的一种间接的方式 var关键字会动去判断后面的变量具体的数据类型。
这个Linq语句的与上面一样,第一个关键字是from,from后面加的是变量,变量后加in,后加上事先实例化的模型,然后点出数据的来源。
第二句也差不多,先是关键字select查询,后面加上new的关键字,但这里不需要再加上事先封装好的要查询数据的数据类型类。
同样的,在select查询里面为字段赋值,但这里并没有指定数据类型,所以也没有指定字段。
最后,这里因为List没有指定数据类型,所以不需要ToList()进行转换。
3、Lambda表达式
Lambda表达式相对于上面两种写法更加简洁。
=============================================================================================
var list = Model.SYS
.Select(m => new {
id = m.ID,
text = m.Name
});
=============================================================================================
先用var声明一个变量,然后直接调用实例化的模型,点出数据的来源;紧接着后面直接调用一个查询方法.Select()。
括号里面为表达式,m是参数,这个参数名称没有指定为m,可以自行定义;=>是Lambda表达式的一个运算符;同样加上new的关键字;花括号里面为具体的一个方法体,填写需要查询的字段。
上面几种方法,它们最后的效果都是同样的。