zoukankan      html  css  js  c++  java
  • LinqToSQL4

    Join和GroupJoin的区别

    List<Atable> ainfo = new List<Atable>
                {
                    new Atable{ AId=1, AName="A1", AAge="11" },
                    new Atable{  AId=2, AName="A2", AAge="12"},
                    new Atable{ AId=3, AName="A3",AAge="13"}
                };
                List<Btable> binfo = new List<Btable>()
                {
                    new Btable{ BId=1, BName="B1", BAge="81" },
                    new Btable{  BId=3, BName="B3", BAge="83"},
                    new Btable{ BId=5, BName="B5",BAge="85"}
                 };

    Join

    官方释义:基于匹配键对两个序列的元素进行关联。使用默认的相等比较器对键进行比较。

    这个与数据库中的INNER JOIN很类似,就是使用一个键(TKey)将两个集合关联起来,并对这两个集合的元素进行选择,作为结果输出。

                var info = ainfo.Join(binfo, //需要连接的数据源
                 a => a.AId,
                 b => b.BId,
                   (a, b) => new { a.AName, b.BName }); //获取自己定义类型的集合。
                foreach (var item in info)
                {
                    Console.WriteLine(item.AName + item.BName);
                }

    GroupJoin

    官方释义: 基于键相等对两个序列的元素进行关联并对结果进行分组。使用默认的相等比较器对键进行比较。

    这个与数据库的LEFT OUTER JOIN很类似。与Join的区别就是:GroupJoin内resultSelector的输入参数从TInner单个元素编程IEnumerable<TInner>元素集合,其他保持不变。用法与Join差不多,它也是基于TOuter.TKey及TInner.TKey的连接。

     var info = ainfo.GroupJoin(binfo,   //需要连接的数据源
                    Atable => Atable.AId,      //通过AId指定数据源
                    Btable => Btable.BId,      //通过BId指定数据源
                    (a, b) => new
                    {
                        a.AName,
                        binfos = b
                    }//创建结果相同的数据
                   ).ToList();
    
                foreach (var item in info)
                {
                    foreach (var b in item.binfos)
                    {
                        Console.WriteLine(item.AName + "	" + b.BName);
                    }
    
                }

      

  • 相关阅读:
    《算法笔记》8.1小节——搜索专题->深度优先搜索(DFS)
    [xdoj]1303jlz的刷题黑科技
    [xdoj]1299&1300朱神的烦恼 朱神的序列
    [洛谷]p1996约瑟夫环 &xdoj1311
    [xdoj] 1310 DSKer的卡牌游戏
    [xdoj] 1301&1302 数字计数 数字计数的复仇
    随手快递app开发第十六天
    随手快递app开发第十五天
    随手快递app开发第十四天
    随手快递app开发第十三天
  • 原文地址:https://www.cnblogs.com/jxl123456/p/11114078.html
Copyright © 2011-2022 走看看