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編程

官方釋義:基於匹配鍵對兩個序列的元素進行關聯。使用默認的相等比較器對鍵進行比較。spa

這個與數據庫中的INNER JOIN很相似,就是使用一個鍵(TKey)將兩個集合關聯起來,並對這兩個集合的元素進行選擇,做爲結果輸出。code

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

GroupJoinblog

官方釋義: 基於鍵相等對兩個序列的元素進行關聯並對結果進行分組。使用默認的相等比較器對鍵進行比較。it

這個與數據庫的LEFT OUTER JOIN很相似。與Join的區別就是:GroupJoin內resultSelector的輸入參數從TInner單個元素編程IEnumerable<TInner>元素集合,其餘保持不變。用法與Join差很少,它也是基於TOuter.TKey及TInner.TKey的鏈接。table

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

            }
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息