左外链接html
即使JOIN的右侧不存在于与左侧相等的键值,左侧包含的记录也照样返回。code
当右侧的链接的右侧没有左侧对应的元素时,内链接会忽略左侧元素。要想保留左侧元素,可使用作外链接。右侧被置为默认值,如:引用类型被置为空。 htm
例如get
CreateEntities(); var query = from c in customers join o in orders on c.CustomerId equals o.CustomerId into os from o2 in os.DefaultIfEmpty( new Order { OrderId = 0, CustomerId = 0, Products = new List<Product>() }) select new { c, o2 }; foreach (var item in query) { Console.WriteLine("Customer Id:{0}, Name:{1}--Order Id:{0}",item.c.CustomerId, item.o2.OrderId); }
内链接it
只有JOIN的两端都匹配到的记录,才被返回。class
选择左右两侧集合都含有相对应的元素。foreach
CreateEntities(); var query = from c in customers join o in orders on c.CustomerId equals o.CustomerId where o.OrderId == 2 select c; foreach (var customer in query) { Console.WriteLine("Id:{0}, Name:{1}", customer.CustomerId, customer.Name); }
分组联接List
实例select
CreateEntities(); var query = from c in customers join o in orders on c.CustomerId equals o.CustomerId into os select new { c, os }; foreach (var item in query) { Console.WriteLine("Customer Id:{0}, Name:{1}", item.c.CustomerId, item.c.Name); foreach (var o in item.os) { Console.WriteLine("--Order Id:{0}", o.OrderId); } }
备注引用
要实现Group Join咱们要引入一个关键字:into
文章转载自: linq中join用法 http://www.studyofnet.com/news/400.html