private ContractViewModel GetIndexListContracts( ExtendedIdentityDbContext db, IOwinContext context, ContractListCondition condition) { int count = 0; IQueryable <ContractConcatHelper> dbQuery = null; IQueryable <OrderContract> orderContractQuery = null; IQueryable <SaleContract> saleContractQuery = null; #region handling differences ContractListInclude include = condition.ListInclude & ContractListInclude.OrderContractOnly; if (include == ContractListInclude.OrderContractOnly) { orderContractQuery = AppBusinessManager.Instance.GetIndexListOrderContract( context, db, condition); // null, string.Empty, condition.UserName, out ot1); } include = condition.ListInclude & ContractListInclude.SaleContractOnly; if (include == ContractListInclude.SaleContractOnly) { saleContractQuery = AppBusinessManager.Instance.GetIndexListSaleContract( context, db, condition); // db, condition.OrderType, null, null, string.Empty, condition.UserName, out ot2); } if (orderContractQuery == null) { orderContractQuery = db.OrderContracts; } if ((condition.ListInclude & ContractListInclude.OrderContractOnly) == ContractListInclude.OrderContractOnly && (condition.ListInclude & ContractListInclude.SaleContractOnly) != ContractListInclude.SaleContractOnly) { dbQuery = orderContractQuery.Select(m => new ContractConcatHelper() { ContractId = m.OrderContractId, ContractKey = m.OrderContractKey, ContractType = ContractViewModelType.OrderContract, CTIME = m.OrderCreateTime, OrderContract = m, SaleContract = null,//default(SaleContract), }); } else if ((condition.ListInclude & ContractListInclude.OrderContractOnly) != ContractListInclude.OrderContractOnly && (condition.ListInclude & ContractListInclude.SaleContractOnly) == ContractListInclude.SaleContractOnly) { dbQuery = saleContractQuery.Select(n => new ContractConcatHelper() { ContractId = n.SaleContractId, ContractKey = n.SaleContractKey, ContractType = ContractViewModelType.SaleContract, CTIME = n.SaleCreateTime, OrderContract = null,//default(OrderContract), SaleContract = n, }); } else {//Both: dbQuery = orderContractQuery.Select(m => new ContractConcatHelper() { ContractId = m.OrderContractId, ContractKey = m.OrderContractKey, ContractType = ContractViewModelType.OrderContract, CTIME = m.OrderCreateTime, OrderContract = m, SaleContract = null, //default(SaleContract), }); if ((condition.ListInclude & ContractListInclude.SaleContractOnly) == ContractListInclude.SaleContractOnly) { dbQuery.Concat(saleContractQuery.Select(n => new ContractConcatHelper() { ContractId = n.SaleContractId, ContractKey = n.SaleContractKey, ContractType = ContractViewModelType.SaleContract, CTIME = n.SaleCreateTime, OrderContract = null,//default(OrderContract), SaleContract = n, })); } } #endregion ContractViewModel resultModel = CreateResultModelInternal( condition, ref count, ref dbQuery); return(resultModel); }