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