欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

LinqToSQL4

程序员文章站 2022-04-14 18:40:19
Join和GroupJoin的区别 Join 官方释义:基于匹配键对两个序列的元素进行关联。使用默认的相等比较器对键进行比较。 这个与数据库中的INNER JOIN很类似,就是使用一个键(TKey)将两个集合关联起来,并对这两个集合的元素进行选择,作为结果输出。 GroupJoin 官方释义: 基于 ......

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

            }