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 + "\t" + b.BName);
} }

  

最新文章

  1. viewPager + fragment
  2. [No00000C]Word快捷键大全 Word2013/2010/2007/2003常用快捷键大全
  3. POJ 3259 Wormholes (判负环)
  4. Oracle数据库安装及配置(一)
  5. javaScript中的单引号与双引号
  6. Js中获取frames中的元素
  7. Spring3.0 入门进阶(三):基于XML方式的AOP使用
  8. C/C++动态分配与释放内存的区别详细解析
  9. 实践过配置成功的VNC安装配置
  10. Android App 沉浸式状态栏解决方案
  11. 07-C语言流程控制if、switch
  12. python 启动简单web服务器
  13. Android图像篇
  14. 离线安装gcc(CentOS7)
  15. Scratch2.0例—接苹果
  16. 福州大学软件1715|W班-助教卞倩虹个人简介
  17. [LeetCode] Output Contest Matches 输出比赛匹配对
  18. RN开发第二天
  19. git 命令提交文件
  20. 【Android基础】利用Intent在Activity之间传递数据

热门文章

  1. Sublime Markdown预览插件安装流程
  2. docker常用指令
  3. mongodb 数据更新命令、操作符
  4. vue 调用微信支付方法
  5. tortoiseGit did not exit cleanly (exit code 128)
  6. Qt编写安防视频监控系统8-双击节点
  7. [Scikit-learn] Dynamic Bayesian Network - Conditional Random Field
  8. JAVA 基础编程练习题18 【程序 18 乒乓球赛】
  9. 100% 加速 WebSAMS 3.0 (轉載)
  10. OpenGL(6)——坐标系