LinqToSQL4
阅读原文时间:2023年07月15日阅读:2

Join和GroupJoin的区别

List ainfo = new List
{
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 binfo = new List()
{
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元素集合,其他保持不变。用法与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);  
            }

        }

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章