c# LINQ查询的两种方式
Method Syntax, 查询方法方式
主要利用 System.Linq.Enumerable 类中定义的扩展方法和 Lambda 表达式方式进行查询
上一章的例子都是以这种方式查询
Query Syntax, 查询语句方式
一种更接近 SQL 语法的查询方式
可读性更好
int[] numbers = new int[] { 6, 4, 3, 2, 9, 1, 7, 8, 5 };
查询语句
var even = from number in numbers
where number % 2 == 0
orderby number descending
select number;
int[] numbers = new int[] { 6, 4, 3, 2, 9, 1, 7, 8, 5 };
查询方法
var even = numbers
.Where(p => p % 2 == 0)
.OrderByDescending(p => p)
.Select(p => p);
查询语句与查询方法存在着紧密的关系
CLR本身并不理解查询语句,它只理解查询方法
编译器负责在编译时将查询语句翻译为查询方法
大部分查询方法都有对应的查询语句形式:如 Select() 对应 select 、 OrderBy() 对应 orderby
部分查询方法目前在C#中还没有对应的查询语句:如 Count()和Max() 这时只能采用以下替代方案
查询方法
查询语句 + 查询方法的混合方式;
一般情况下,建议使用可读性更好的查询语句