1、第一个Linq查询
新建控制台应用程序 FirstLinq 代码如下:
static void Main(string[] args)
{
string[] names = { "Anna","zheng","Sime","Jake","Smyth","Sallmall","Ruby","Hesi","fank","Single","Samban","Simiss"};
var querys = from name in names where name.StartsWith("S") select name;
foreach (var item in querys)
{
Console.WriteLine(item);
}
Console.ReadLine();
}
第一步,空间引用 using System.Linq ,VS软件已经做了,其中:
var querys = from name in names where name.StartsWith("S") select name;
才是真正的 LINQ 查询语句;格式:from 变量名 in 集合对象 where 条件 select 变量名;
1、LINQ 查询首先需要声明一个变量,这个变量通常用 var 关键字声明一个变量来完成的;
2、指定要查询的数据
from name in names
本例中的数据源是前面声明的字符串数组 names ,变量 name 是数据源中的某一元素代表,类似 foreach 语句后面的变量。
3、指定查询条件:where 句子
where name.StartsWith("S")
where句子是可选的,甚至可以忽略,但大多数情况下,都需要指定 where 来限制查询结果,因此 where 又称之为 LINQ 语句中的限制运算符。这里 name.StartsWith("S") 表示限制为以 S 开头的,你也可以限制成长度大于 6 的(where names.Length>6)或者字符中包含 a (where names.Contain("a"))。
4、选择元素: select 句子
select name
select 句子是必须的,这是为了指定结果元素中包含那些元素,select name 的意思就是把查询到的结果存到声明的变量 querys 中。
2、查询语法和方法语法
查询语法是 LINQ 中编写查询的首选,他更容易理解,最常见的查询使用起来也更简单,上面的例子使用的就是查询语法,但有时候查询语法实现不了,只能使用方法语法来实现,或者说方法与法更简单。如下,介绍上面案例使用方法语法查询的 LINQ 语句写法。
static void Main(string[] args)
{
string[] names = { "Anna","zheng","Sime","Jake","Smyth","Sallmall","Ruby","Hesi","fank","Single","Samban","Simiss"};
Console.WriteLine("查询语法输出结果:");
//查询语法
var querys = from name in names where name.StartsWith("S") select name;
foreach (var item in querys)
{
Console.WriteLine(item);
}
Console.WriteLine("方法语法输出结果:");
//方法语法
var querys2 = names.Where(n=>n.StartsWith("S"));
foreach (var item in querys2)
{
Console.WriteLine(item);
}
Console.ReadLine();
}
现在 LINQ 查询调用的就是 Where() 方法,而不是查询表达式。
3、查询结果排序
查询语句排序
var querys = from name in names where name.StartsWith("S") orderby name select name;
和前面查询语句相同,只是增加了 orderby name ;
orderby name 和 where 一样,也是可选语句,orderby 默认升序(A 到 Z),但可以添加 descending 关键字以便降序(Z 到 A):
orderby name descending
按照姓名最后一个字母排序则是如下:
orderby name.Substring(name.Length-1)
方法语句排序
var querys3 = names.OrderBy(name=>name).Where(n=>n.StartsWith("S"));
而逆排序可以使用 OrderByDescending 来实现。
var querys = names.OrderByDescending(name=>name).Where(n=>n.StartsWith("S"));
按照姓名最后一个字母排序如下:
var querys = names.OrderBy(name=>name.Substring(name.Length-1)).Where(name => name.StartsWith("S"));
源代码下载 猛戳这里