public static IEnumerable <Expression <Func <SalesOrderDetail, SalesOrderDetailReturn> > > SplitSelectOrderDetail(AdventureWorksContext context) { var product = ProductProjectors.SelectProductionProduct(); var specialOffer = SpecialOfferProductProjectors.SelectSpecialOfferProduct(); var singularProduct = ProductProjectors.SelectProductionProduct().Merge(); return(new Projectors <SalesOrderDetail, SalesOrderDetailReturn> { d => new SalesOrderDetailReturn { CarrierTrackingNumber = d.CarrierTrackingNumber, Quantity = d.OrderQty, UnitPrice = d.UnitPrice, UnitDiscount = d.UnitPriceDiscount, LineTotal = d.LineTotal, SpecialOfferProduct = specialOffer.Invoke(d.SpecialOfferProduct), Product = singularProduct.Invoke(d.SpecialOfferProduct.Product) }, //{ product, p => d => new SalesOrderDetailReturn // { // Product = p.Invoke(d.SpecialOfferProduct.Product) // } //} }); }
public static IEnumerable <Expression <Func <WorkOrder, WorkOrderReturn> > > SelectWorkOrder() { var product = ProductProjectors.SelectProductionProduct(); var routings = WorkOrderRoutingProjectors.SelectWorkOrderRouting(); return(new Projectors <WorkOrder, WorkOrderReturn> { w => new WorkOrderReturn { WorkOrderId = w.WorkOrderID, OrderQuantity = w.OrderQty, StockedQuantity = w.StockedQty, StartDate = w.StartDate, EndDate = w.EndDate, DueDate = w.DueDate, ScrapReason = new[] { w.ScrapReason }.Select(r => r.Name).FirstOrDefault() }, { product, p => w => new WorkOrderReturn { Product = p.Invoke(w.Product) } }, { routings, p => w => new WorkOrderReturn { Routings = w.WorkOrderRoutings.Select(r => p.Invoke(r)) } } }); }
public static Expression <Func <SpecialOfferProduct, SpecialOfferProductReturn> > SelectSpecialOfferProduct() { return(ProductProjectors.SelectProduct().Merge(Projector <SpecialOfferProduct> .To(p => new SpecialOfferProductReturn { Description = p.SpecialOffer.Description, Type = p.SpecialOffer.Type, Category = p.SpecialOffer.Category, Discount = p.SpecialOffer.DiscountPct }), s => s.Product)); }