Linq to Object

本文介绍了Linq作为C#中的一种强类型查询语言,它能够以统一且对称的方式帮助程序员获取和操作数据,包括XML、DataSet及物理数据等多种来源。通过具体的代码示例,展示了如何使用Linq进行数据子集的获取、排序、反转、去重等操作。

本文将讲述C#中的Linq技术。


一:linq是什么? 

linq可以理解为嵌入C#语法的强类型查询语言。(注意:尽管linq看起来和Sql查询很像,但语法却不相同。)

二:linq的作用?
提供一种统一且对称的方式,让程序员得到数据和操作数据(此处的数据可以是XML,DataSet,物理数据等) 

三:linq可应用在哪些场景?
Linq to Object、Linq to XML、Linq to DataSet、Linq to Entities、Parallel Linq(并行处理linq查询返回的数据)

linq的基本语法:var result = from item in container select item; 

linq获取数据子集: var result = from item in container where booleanexpression select item;

linq to object例子

 

static void QueryStrings()
        {
            string[] games = { "Morrowind", "Uncharted 2", "Fallout 3", "Daxter", "Shock2" };
            //构建一个查询表达式(注意:ling表达式在迭代内容之前,他们不会真正的运行计算)
            //linq此时还没有运算//linq查询的结果集,应该总是使用隐式类型,在绝大数情况下,真正的返回值实现了泛型 IEnumerable<T>接口的类型
            var subset = from g in games where g.Contains(" ") orderby g select g;
            //上面代码也可以写成 IEnumerable<string> subset = from g in games where g.Contains(" ") orderby g select g;
            //输出结果。在迭代的时候才运算(这叫:延迟执行)
            foreach (string s in subset)
            {
                Console.WriteLine("含有空格的是:{0}", s);
            }
            Console.ReadLine();
        }

        //linq在迭代外运算例子:
        //在foreach逻辑外运算linq
        static void QueryInt()
        {
            //如果希望在foreach逻辑外表运算Linq表达式,可以调用有Enumerable类型定义的扩展方法。如ToArray<T>()、ToList<T>()等。
            int[] numbers = { 2, 10, 30, 15, 1, 22 };
            int[] rst = (from i in numbers where i > 10 orderby i select i).ToArray<int>();
            foreach (int a in rst)
            {
                Console.WriteLine(a);
            }
            Console.ReadLine();
        }

        //linq查询中的常用函数
        //1.count<T>() 获取linq查询表达式返回的项数 输出3
        static void FunLinq()
        {
            int[] numbers = { 2, 10, 30, 15, 1, 22 };
            int count = (from i in numbers where i > 10 orderby i select i).Count<int>();
            Console.WriteLine(count);
            Console.ReadLine();
        }

        //Reverse<T>对linq结果集中的项进行反转 输出22 1 15 30 10 2
        static void FunLingReverse()
        {
            int[] numbers = { 2, 10, 30, 15, 1, 22 };
            var newNumbers = from i in numbers select i;
            foreach (var p in numbers.Reverse())
            {
                Console.Write(p + " ");
            }
            Console.ReadLine();
        }
        //.orderby 对linq进行排序,默认是正序
        //排序
        static void FunLinqOrder()
        {
            string[] games = { "App", "Boss", "Cat", "Date", "End" };
            var newn = from i in games orderby i ascending select i;
            foreach (var p in newn)
            {
                Console.Write(p + ". ");
            }
            //var newd=from d in games orderby d descending select d;
            //foreach (var p in newd)
            //{
            //    Console.Write(p+". ");
            //}

            Console.ReadLine();
        }

        //Distinct()移除数据中的重复项目
        //排序(正序)
        static void FunLinqDistinct()
        {
            string[] games = { "App", "Date", "App", "Date", "End" };
            var newn = from i in games orderby i ascending select i;
            foreach (var p in games.Distinct())
            {
                Console.Write(p + " ");
            }
            Console.ReadLine();
        }

        static void FunLinqGather()
        {
            string[] games = { "3App", "2Boss", "9Cat", "6Date", "1End" };
            var maxi = (from i in games orderby i ascending select i).Max();
            var mini = (from i in games orderby i ascending select i).Min();
            int[] gameNum = { 5, 8, 9, 7, 4, 6, 3 };
            var avei = (from i in gameNum orderby i ascending select i).Average();
            var sumi = (from i in gameNum orderby i ascending select i).Sum();
            Console.WriteLine(sumi);
            Console.ReadLine();
        }

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值