using System; using System.Collections; using System.Collections.Generic; using System.Linq; using Xunit; using LinqStudy; namespace LinqStudy.Test.LinqToObject { /// /// 联接操作:将一个数据源对象与另一个数据源对象进行关联或联合的操作。 /// 延迟执行 /// 数据源为null,均引发异常 /// public class JoinTest { #region Jion /// /// Jion:将一个数据源与另一个数据源相联接,根据两个数据源中相等的值进行匹配; /// 类似T-SQL中的Inner Join /// 延迟执行 /// [Fact] public void Jion_Test() { List peoples = new List() { new Person(){ Id=1, Name="小龙女",Age=18 }, new Person(){ Id=2, Name="郭靖",Age=28 }, }; List teachers = new List() { new Teacher(){ Id=1, Name="杨过老师",Hometown=new Hometown(){ Province="终南山",City="古墓"} }, new Teacher(){ Id=2, Name="郭老师",Hometown=new Hometown(){ Province="湖北省",City="襄阳"} }, new Teacher(){ Id=3, Name="金轮法师",Hometown=new Hometown(){ Province="西藏",City="游民"} }, }; var jionItem = peoples.Join ( teachers, p => p.Id, t => t.Id, (p, t) => new { Id = 1, Name = p.Name + "-" + t.Name, Age = 18, Hometown = t.Hometown } ) .ToList(); Assert.Equal(2, jionItem.Count); } #endregion #region GroupJion #endregion } }