zoukankan      html  css  js  c++  java
  • C# LinQ的基本子句、协变与异变

                //1.from 子句:
                int[] arr = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
                var query = from n in arr
                            where n > 3
                            select n;
                foreach (var i in query)
                {
                    Console.WriteLine("" + i);
                }
    
    
                //2.select 子句:
                int[] arr = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
                var query = from n in arr
                            select n * 2;
                foreach (var i in query)
                {
                    Console.WriteLine("" + i);
                }
    
    
                //3.where 子句:
                int[] arr = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
                var query = from n in arr
                            where test(n) > 5
                            select n;
                foreach (var i in query)
                {
                    Console.WriteLine(i);
                }
    
                //4.let 子句:
                int[] arr = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
                var query = from n in arr
                            let num = n * 2
                            where num > 5
                            select n;
                foreach (var i in query)
                {
                    Console.WriteLine(i);
                }
    
                //5.order by 子句:
                int[] arr = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
                var query = from n in arr
                            where n > 3
                            orderby n descending
                            select n;
                foreach (var i in query)
                {
                    Console.WriteLine(i);
                }
    
    
                //6.group by 子句:
                int[] arr = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
                var query = from n in arr
                            where n > 1
                            group n by n % 2;
                foreach (var i in query)
                {
                    foreach (var j in i)
                    {
                        Console.WriteLine(j);
                    }
                }
    
                //7.into  子句:
                int[] arr = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
                var query = from n in arr
                            where n > 1
                            group n by n % 2 into temp
                            from sn in temp
                            select sn;
                foreach (var i in query)
                {
                    Console.WriteLine(i);
                }
    
    
                //8.join  子句:
                int[] arrA = { 0, 1, 2, 4, 5, 6, 7, 8, 9 };
                int[] arrB = { 0, 3, 5, 6, 9 };
                var query = from n in arrA
                            join ni in arrB on n equals ni
                            select ni;
                foreach (var i in query)
                {
                    Console.WriteLine(i);
                }
                /*
                 * 1.协变与异变:
                 * 协变:指能够使用与原始指定的派生类型相比,派生程度更大的类型
                 * string-->object
                 * 逆变:指能够使用派生程度更新的类型
                 * object-->string
                 * */
                string[] arr = { "C#", "java", "javascript", "VC", "VB", "VB.net", "C++" };
                var query = from n in arr
                            group n by n.Length into lentGroup
                            orderby lentGroup.Key  //协变与逆变
                            select lentGroup;
                foreach (var i in query)
                {
                    Console.WriteLine("" + i.Key);
                    foreach (var str in i)
                    {
                        Console.WriteLine("" + str);
                    }
                }
  • 相关阅读:
    驱动之类似内存接口的介绍与应用20170209
    驱动之LCD的介绍与应用20170209
    驱动之NandFlash的介绍与应用20170209
    Android广播机制的深入学习
    C++的隐式类型转换与转换操作符
    PackageManager使用
    在命令行中通过adb shell am broadcast发送广播通知
    Android无法收到指定广播的问题总结
    overload, override和overwrite之间的区别
    Longest Substring Without Repeating Characters -- LeetCode
  • 原文地址:https://www.cnblogs.com/parkerchen/p/12853680.html
Copyright © 2011-2022 走看看