投影

□ 遍历数组索引,Select获取

            int[] indexes = {0, 2}; 
            string[] strs = {"a", "b", "c", "d"};
 
            var result = from i in indexes 
                select strs[i];
 
            foreach (string str in result) 
            { 
                Console.Write(str + " "); 
            } 
            Console.ReadKey();

结果:a c

□ 使用集合索引投影匿名对象

        static void Main(string[] args) 
        { 
            int[] numbers = {0, 3, 4, 5, 7}; 
            var result = numbers.Select((n, index) => new {Num = n, IsValueEqualIndex = (n == index)}); 
            foreach (var item in result) 
            { 
                Console.WriteLine("{0}:{1}",item.Num,item.IsValueEqualIndex); 
            } 
            Console.ReadKey(); 
        }

结果:

□ 2个集合的笛卡尔积

            int[] numberA = {0,2}; 
            int[] numberB = {1,3};
 
            var result = from a in numberA 
                from b in numberB 
                select new {a, b}; 
            foreach (var item in result) 
            { 
                Console.WriteLine("{0},{1}",item.a,item.b); 
            } 
            Console.ReadKey();

结果:

□ 笛卡尔积应用,列出所有客户的所有订单

   public class Customer 
    { 
        public int Id { get; set; } 
        public string Name { get; set; } 
        public List<Order> Orders { get; set; } 
    }
 
    public class Order 
    { 
        public int Id { get; set; } 
        public decimal Total { get; set; } 
    }
 
            Order order1 = new Order(){Id = 1,Total = 10.00m}; 
            Order order2 = new Order(){Id = 2,Total = 20.00m}; 
            Order order3 = new Order(){Id = 3,Total = 30.00m};
 
            List<Customer> customers = new List<Customer>() 
            { 
                new Customer() 
                { 
                    Id = 1, 
                    Name = "张三", 
                    Orders = new List<Order>(){order1,order2} 
                }, 
                new Customer() 
                { 
                    Id = 2, 
                Name = "李四", 
                Orders = new List<Order>() { order3 } 
                } 
            };
 
 
            var result = from c in customers 
                from o in c.Orders 
                select new {c.Id, c.Name, o.Total};
 
            foreach (var item in result) 
            { 
                Console.WriteLine("客户编号:{0},姓名:{1},订单金额:{2}", item.Id,item.Name,item.Total); 
            }
 
            Console.ReadKey();    
 

结果:

分组

□ group n by 条件 into g, g.Key就是分组标准和条件, g代表分组里所有元素的集合

            int[] numbers = { 5, 4, 1, 3, 9, 8, 6}; 
            var result = from n in numbers 
                group n by n%5 into g 
                select new {Remainder = g.Key, Numbers = g};
 
            foreach (var item in result) 
            { 
                Console.WriteLine("元素除以5的余数为:{0}",item.Remainder); 
                foreach (var n in item.Numbers) 
                { 
                    Console.WriteLine(n); 
                } 
            } 
            Console.ReadKey();

结果:

连接

□ 根据2个集合的相同部分连接

    public class Product 
    { 
        public int Id { get; set; } 
        public string Name { get; set; } 
        public string Category { get; set; } 
    }
 
            List<Product> products = new List<Product>() 
            { 
                new Product(){Id=1,Name = "体恤衫",Category = "服饰"}, 
                new Product(){Id = 2,Name = "香水",Category = "化妆品"} 
            };
 
            string[] categoreis = new string[] 
            { 
                "服饰", 
                "化妆品", 
                "电子" 
            };
 
            var result = from c in categoreis 
                join p in products on c equals p.Category 
                select new {Category = c, p.Name}; 
            foreach (var item in result) 
            { 
                Console.WriteLine(item.Name + "属于:" + item.Category); 
            } 
            
            Console.ReadKey();   

结果:

□ 把其中一个集合的所有元素放到一个别名集合中

            List<Product> products = new List<Product>() 
            { 
                new Product(){Id=1,Name = "体恤衫",Category = "服饰"}, 
                new Product(){Id = 2,Name = "香水",Category = "化妆品"} 
            };
 
            string[] categoreis = new string[] 
            { 
                "服饰", 
                "化妆品", 
                "电子" 
            };
 
            var result = from c in categoreis 
                join p in products on c equals p.Category into ps 
                select new {Category = c, Products = ps}; 
            foreach (var item in result) 
            { 
                Console.WriteLine("类别:{0}包括:",item.Category); 
                foreach (var p in item.Products) 
                { 
                    Console.WriteLine("      " + p.Name); 
                } 
            } 
            
            Console.ReadKey();

结果:

25LINQ拾遗及实例相关推荐

  1. 前端开发基础知识汇总

    一.HTML 1.前言与常用标签 浏览器 内核 备注 IE Trident IE.猎豹安全.360极速浏览器.百度浏览器 firefox Gecko 可惜这几年已经没落了,打开速度慢.升级频繁.猪一样 ...

  2. Spring Cloud微服务系统架构的一些简单介绍和使用

    Spring Cloud 目录 特征 云原生应用程序 Spring Cloud上下文:应用程序上下文服务 引导应用程序上下文 应用程序上下文层次结构 改变Bootstrap的位置Properties ...

  3. input标签拾遗--引申TIY实例(下)

    另一个下拉列表 本例演示如何创建一个简单的带有预选值的下拉列表.(译者注:预选值指预先指定的首选项.) <html><body><form> <select ...

  4. 迁移 Nexus 软件仓库拾遗

    本文使用「署名 4.0 国际 (CC BY 4.0)」许可协议,欢迎转载.或重新修改使用,但需要注明来源. 署名 4.0 国际 (CC BY 4.0) 本文作者: 苏洋 创建时间: 2018年10月0 ...

  5. Spring Cloud Finchley版中Consul多实例注册的问题处理

    由于Spring Cloud对Etcd的支持一直没能从孵化器中出来,所以目前来说大多用户还在使用Eureka和Consul,之前又因为Eureka 2.0不在开源的消息,外加一些博眼球的标题党媒体使得 ...

  6. Flutter 实例 - 加载更多的ListView

    Dart4Flutter - 01 – 变量.类型和函数 Dart4Flutter – 02 –控制流 和异常 Dart4Flutter – 03 – 类和泛型 Dart4Flutter – 04 – ...

  7. c# xml文件新增同级节点_[C#.NET 拾遗补漏]08:强大的LINQ

    大家好,这是 [C#.NET 拾遗补漏] 系列的第 08 篇文章,今天讲 C# 强大的 LINQ 查询.LINQ 是我最喜欢的 C# 语言特性之一. LINQ 是 Language INtegrate ...

  8. 基础拾遗------泛型详解

     基础拾遗: 前言: 1.泛型的约束 2.泛型继承 3.关键字default 4.泛型方法 5.泛型接口 6.泛型数组 7.泛型委托 基础拾遗: 基础拾遗------特性详解 基础拾遗------ ...

  9. [C#.NET 拾遗补漏]08:强大的LINQ

    阅读本文大概需要 13 分钟. 大家好,这是 [C#.NET 拾遗补漏] 系列的第 08 篇文章,今天讲 C# 强大的 LINQ 查询.LINQ 是我最喜欢的 C# 语言特性之一. LINQ 是 La ...

最新文章

  1. oracle如何复制表的索引,Oracle表与索引管理
  2. 从Google Wave和XML看软件复杂性之争,互联网营销
  3. PIL库自我学习总结及应用(美白,磨皮,搞笑图片处理)
  4. php thumbs.db,window_Win8系统删除thumbs.db文件的方法,  最近有Win8系统用户反映, - phpStudy...
  5. Hadoop + Amazon EC2 –更新的教程
  6. javascript arguments
  7. 虚拟环境安装Scrapy框架
  8. 父组件传递值给子组件(一)
  9. 吴恩达深度学习2.1练习_Improving Deep Neural Networks_initialization
  10. Taskctl是什么软件,有什么用?
  11. Python初学系列——天天向上的力量
  12. 信息收集之——FOFA网站常用搜索语法
  13. ubuntu中各个文件夹的作用
  14. day09---(02)课程大纲-小节添加修改删除(前端)
  15. 完美解决api-ms-win-crt-runtime-l1-1-0.dll详细步骤
  16. OCR识别技术保险保单识别系统|车险保单识别寿险保单识别|助力保险理赔
  17. 2022-06-29 银河麒麟V10 Nginx-rtmp+FFmpeg流媒体服务器环境搭建
  18. macOS下malware移除实战之Qsearch浏览器劫持的移除
  19. oracle数据库背景颜色,ORACLE FORM 开发:更新背景颜色
  20. android 二级折叠列表,Android折叠列表 ExpandableList

热门文章

  1. bat窗口大小设置_8-Flink中的窗口
  2. ViewPager + TabLayout + Fragment + MediaPlayer的使用
  3. mvc 模式和mtc 模式的区别
  4. Web程序中使用EasyUI时乱码问题
  5. msp430入门编程42
  6. Light OJ 1007
  7. C语言经典面试题目(转的,不过写的的确好!)
  8. 新手求大神,有其他swit-case的思路写这个程序么?
  9. DataGridView控件初始化,添加删除行(不绑定数据库)
  10. 随机数尽可能做到不重复