LINQ真的好强大

  最近工作要用到LINQ的内容,组长给了我本LINQ实战(Linq in Action)让我看,按照书上的做了下面两个例子,就感觉LINQ真的太强大了。

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是一个可以扩展的)就能够随意的访问数据(任何类型的数据源)。

转载于:https://www.cnblogs.com/wangcw/archive/2011/01/07/1929373.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值