zoukankan      html  css  js  c++  java
  • Linq101-Join

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 
     5 namespace Linq101
     6 {
     7     internal class Join
     8     {
     9         /// <summary>
    10         /// This sample shows how to efficiently join elements of two sequences based on equality between key expressions over the two.
    11         /// </summary>
    12         public void Linq102()
    13         {
    14             string[] categories = { "Beverages", "Condiments", "Vegetables", "Dairy Products", "Seafood" };
    15             List<Data.Product> products = Data.GetProductList();
    16 
    17             var q = from c in categories
    18                     join p in products on c equals p.Category
    19                     select new { Category = c, p.ProductName };
    20 
    21             ObjectDumper.Write(q);
    22         }
    23 
    24         /// <summary>
    25         /// Using a group join you can get all the products that match a given category bundled as a sequence.
    26         /// </summary>
    27         public void Linq103()
    28         {
    29             string[] categories = { "Beverages", "Condiments", "Vegetables", "Dairy Products", "Seafood" };
    30             List<Data.Product> products = Data.GetProductList();
    31 
    32             var q = from c in categories
    33                     join p in products on c equals p.Category into ps
    34                     select new { Category = c, Products = ps };
    35 
    36             foreach (var v in q)
    37             {
    38                 Console.WriteLine(v.Category + ":");
    39                 foreach (var p in v.Products)
    40                 {
    41                     Console.WriteLine("   " + p.ProductName);
    42                 }
    43             }
    44         }
    45 
    46         /// <summary>
    47         /// The group join operator is more general than join, as this slightly more verbose version of the cross join sample shows.
    48         /// </summary>
    49         public void Linq104()
    50         {
    51             string[] categories = { "Beverages", "Condiments", "Vegetables", "Dairy Products", "Seafood" };
    52             List<Data.Product> products = Data.GetProductList();
    53 
    54             var q = from c in categories
    55                     join p in products on c equals p.Category into ps
    56                     from p in ps
    57                     select new { Category = c, p.ProductName };
    58 
    59             foreach (var v in q)
    60             {
    61                 Console.WriteLine(v.ProductName + ": " + v.Category);
    62             }
    63         }
    64 
    65         /// <summary>
    66         /// A so-called outer join can be expressed with a group join. A left outer joinis like a cross join, 
    67         /// except that all the left hand side elements get included at least once, even if they don't match any right hand side elements. 
    68         /// Note how Vegetablesshows up in the output even though it has no matching products.
    69         /// </summary>
    70         public void Linq105()
    71         {
    72             string[] categories = { "Beverages", "Condiments", "Vegetables", "Dairy Products", "Seafood" };
    73             List<Data.Product> products = Data.GetProductList();
    74 
    75             var q = from c in categories
    76                     join p in products on c equals p.Category into ps
    77                     from p in ps.DefaultIfEmpty()
    78                     select new { Category = c, ProductName = p == null ? "(No Products)" : p.ProductName };
    79 
    80             foreach (var v in q)
    81             {
    82                 Console.WriteLine(v.ProductName + ": " + v.Category);
    83             }
    84         }
    85     }
    86 }
  • 相关阅读:
    linux常用命令的英文单词缩写
    Servlet Struts2 SpringMVC 获取参数与导出数据 方法比较
    Spring 整合Mybatis Mapper动态代理方法
    Spring 整合Mybatis dao原始方法
    Mybatis Mapper动态代理方式 typeAliases 别名的使用
    MySQL 高性能优化实战总结
    Chrome 浏览器最牛插件之一 Vimium
    Spring Cloud-微服务架构集大成者
    单点登录原理与简单实现
    Spring-WebSocket 教程
  • 原文地址:https://www.cnblogs.com/David-Huang/p/4566352.html
Copyright © 2011-2022 走看看