首页 > 数据库技术 > 详细

LinqToSQL4

时间:2019-07-01 16:05:26      阅读:102      评论:0      收藏:0      [点我收藏+]

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);
                }

            }

 

 

 

 

 

 

 

 

  

 

LinqToSQL4

原文:https://www.cnblogs.com/jxl123456/p/11114078.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!