内联:没有into
左联:有into
例子:
from GoodsStore in this.GetCurrentDbSession.Tbl_OfficeSupplies_GoodsStoreDLL.LoadEntities(a => (Guid.Empty==GoodsID?true:a.GoodsID==GoodsID))
join goods in GetCurrentDbSession.Tbl_OfficeSupplies_GoodsDLL.LoadEntities(a => (Guid.Empty == GoodsCategoryID ? true : a.GoodsCategoryID == GoodsCategoryID) && (Guid.Empty == GoodsID ? true : a.ID == GoodsID))
on GoodsStore.GoodsID equals goods.ID
join goodscategory in this.GetCurrentDbSession.Tbl_OfficeSupplies_GoodsCategoryDLL.LoadEntities(a => (Guid.Empty == GoodsCategoryID ? true : a.ID == GoodsCategoryID))
on goods.GoodsCategoryID equals goodscategory.ID
join goodsSpecifications in GetCurrentDbSession.Tbl_OfficeSupplies_GoodsSpecificationDLL.LoadEntities(a => true)
on GoodsStore.GoodsSpecificationID equals goodsSpecifications.ID
join goodsUnit in GetCurrentDbSession.Tbl_OfficeSupplies_GoodsUnitDLL.LoadEntities(a => true)
on goods.UnitID equals goodsUnit.ID into tmp1
from tt in tmp1.DefaultIfEmpty()
select new
{
GoodsID = goods.ID == null ? Guid.Empty : tt.ID,
GoodsName = goods.Name,
GoodsCategoryName = goodscategory.Name,
GoodsSpecificationID = goodsSpecifications.ID == null ? Guid.Empty : goodsSpecifications.ID,
GoodsSpecificationName = goodsSpecifications.Name,
GoodsUnitName = tt.Name,
Count= GoodsStore.Count,
ProcurementCount=GoodsStore.ProcurementCount,
ApplyCount= GoodsStore.ApplyCount
};