开始写代码了,我会把自己的代码粘贴在这里,好不容易可以实践了,可是不能偷懒的。
string[] words = { "hello", "wonderful", "linq", "beautiful", "world" }; var shortWords = from word in words where word.Length <= 5 select word; foreach (var word in shortWords) { Console.WriteLine(word); } Console.Read();
这是个简单的运用Linq来操作集合的。简单的是好理解,但让你理解的不深入,所以,不要害怕困难。
string[] words = { "hello", "wonderful", "linq", "beautiful", "world" }; var groups = from word in words orderby word ascending group word by word.Length into lengthGroups orderby lengthGroups.Key descending select new { Length = lengthGroups.Key, Words = lengthGroups }; foreach (var group in groups) { Console.WriteLine("Words of length "+group.Length); foreach (var word in group.Words) { Console.WriteLine(" "+word); } } Console.Read();
这是个难的,当然也是运用Linq来操作集合(记得以前我是区分不出什么是Linq和Lambda,而且还让同事忽悠过,想想就气愤,不懂一定要自己学)
这个难,我是不理解。为什么凭空出现了LenghtGroups的,既然它能够出现在C#语言中,那一定有它的原因的,比如什么匿名类型啊或者扩展方法啊。当然现在我这些统统不懂呢,不过我觉得和C#基础是有关联的,我也很期待
摘自原文
试一试使用传统方法的实现。你会发现需要很多代码,并且要频繁地操作集合。Linq的第一个优势-强大的表达能力,Linq让我们能够用声明的方式在查询中表达将要实现的目的,而无需编写大量的间接代码。
而且你熟悉SQL的话,或许已经垃圾这些代码正在做什么了。除了支持这种优雅的、类似于SQL的查询之外,Linq也提供了一系类函数,例如Sum、Min、Max和Average等,使我们可以执行更加丰富的操作。
的确Linq省略了大量操作集合的循环判断代码,用声明的方式查询,我有些明白什么叫 声明的方式查询 了;
比如这段代码 decimal totalAmount =orders.Sum(order => order.Amount);是不是一个变量,然后是后面一段赋值,就ok了。
文中后一句,写的熟悉sql,我想再强调下,这只是c#代码,和sql没有关系,不要理解错了,虽然sql脚本中也有Sum语法,但是上面那段代码的SUM是C#代码,文中也只是说类似sql,充分说明linq是方便的操作集合,操作集合就是操作数据喽。不要忘记linq的两个功能,一个是统一查询,另一个是集成到编程语言中,吼吼吼。