LINQ真的好强大
时间:2011-01-07 来源:王长委
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace LinqDemo { class Program { static void Main(string[] args) { string[] words = { "hello","wonderful","linq","beautiful","word"}; //MethodOne(words); MethodTwo(words); } private static void MethodTwo(string[] words) { //将查出的集合放到变量groups中 var groups = //查出words中的每个单词,并定义到word字段中(此时words相当于一张只有一列的表,而现在列的名字就是word) from word in words //根据word进行排序 orderby word ascending //根据word字段的长度进行分组,组的变量为lengthGroups(相当于words表中的数据是由若干个以组为单位的元素组成,也就是说现在words表的列的名字变成了lengthGroups,而lengthGroups也是一张简单的表,它的列的名字是word) group word by word.Length into lengthGroups //因为是以长度进行分组的,如果把words看成是对象,那么他就是lengthGroups类型的集合(也可以看成是一个字典表,键为lengthGroups.Key,值为lengthGroups) //根据lengthGroups的Key属性值(字典表中的键)进行排序 orderby lengthGroups.Key ascending //定义groups集合的基本类型(也就集合里是什么类型的元素) select new { lenth = lengthGroups.Key, words = lengthGroups }; foreach (var group in groups) { Console.WriteLine("words of length " + group.lenth); foreach (string word in group.words) { Console.WriteLine(" " + word); } } } private static void MethodOne(string[] words) { //查出长度小于等于5的单词集合 var shortwords = from word in words where word.Length <= 5 select word; //遍历集合 foreach (var word in shortwords) { Console.WriteLine(word); } } } }
MethodOne比较简单,只能感觉到LINQ能把集合当做数据库中的表一样查询,MethodTwo就有点意思了(上面写了我对方法的每一句的理解),这个例子让我感觉到LINQ其实能把所有的数据看做表(像数据库中的表一样查询到想要的数据)和对象(又有对象的特征),它打破了编程语言和数据之间的的界限,使开发人员只需要会一种编程语言(任何一种编程语言,因为LINQ是一个可以扩展的)就能够随意的访问数据(任何类型的数据源)。
相关阅读 更多 +