public OrderBook UpdateOrder(Order mmsOrder) { if (mmsOrder.MarketSide == MarketSide.Ask) { if (Asks.All(askOrder => askOrder.MMSId != mmsOrder.MMSId)) { throw new ApplicationException("Ask Order changed received, but no existing order found: {0}".FormatAs(mmsOrder)); } // remove var newAsks = Asks.Where(o => o.MMSId != mmsOrder.MMSId).ToList(); // add newAsks.Add(mmsOrder); return(new OrderBook(Bids, newAsks, Exchange, Pair, Time)); } else { if (Bids.All(bidOrder => bidOrder.MMSId != mmsOrder.MMSId)) { throw new ApplicationException("Bid Order changed received, but no existing order found: {0}".FormatAs(mmsOrder)); } // remove var newBids = Bids.Where(o => o.MMSId != mmsOrder.MMSId).ToList(); // add newBids.Add(mmsOrder); return(new OrderBook(newBids, Asks, Exchange, Pair, Time)); } }